我正在尝试禁用我的Aspx页面上的某些控件,但无法使其正常工作。我已经尝试过Javascript和JQuery,所以我知道我一定在做一些简单的错误。
这是我拥有的atm,我知道当我想要它们时肯定要同时输入这两个函数,因为我一直在提醒中告诉我。但是,控件始终保持启用状态!
<script language="javascript" type="text/javascript">
function fun1(){
var input = $('#txtDocs');
input.removeAttr('disabled');
}
function fun2() {
var input = $('#txtDocs');
input.attr('disabled', 'disabled');
}
还有控件本身;
<p>
<asp:TextBox ID="txtDocs" runat="server" Width="218px"
Height="75px" TextMode="MultiLine" MaxLength="40"/>
</p>
我还尝试将以下两个版本的两个函数中的代码交换出去;
document.getElementById("txtDocs").enabled = true;
document.getElementById("txtDocs").attributes.enabled = true;
document.getElementById("txtDocs").disabled = false;
不好我究竟做错了什么?
更新
当前代码;
function fun1(){
alert("1 enable");
$('#txtDocs').removeAttr('disabled');
alert("2 enable");
}
function fun2() {
alert("1 disable");
$('#txtDocs').prop('disabled', true);
alert("2 disable");
}
<asp:TextBox ID="txtDocs" runat="server" Width="218px" ClientIDMode="Static"
Height="75px" TextMode="MultiLine" MaxLength="40"/>
仍然不好://我只看到
alert("1 disable")
,alert("1 enable")
和alert("2 enable")
,所以无法通过fun2 ...注意
调试到我的代码中,只是注意到在运行时我的文本框实际上是一个Textarea。有什么意义吗?另外,它的ID开头会标有通常的“ ctl00_MainContentPlaceHolder_”。
最佳答案
如果您使用的是jQuery 1.6+,则应该使用prop()
$('#txtDocs').prop('disabled',true);
$('#txtDocs').prop('disabled',false);
根据jQuery docs http://api.jquery.com/prop/,应使用.prop()方法设置禁用和检查功能,而不是.attr()方法。