我正在尝试禁用我的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()方法。

10-05 23:12
查看更多