Javascript 禁用控件

Javascript 禁用控件,javascript,jquery,asp.net,Javascript,Jquery,Asp.net,我正在尝试禁用我的Aspx页面上的一些控件,但无法使其正常工作。我试过Javascript和JQuery,所以我知道我一定是做错了什么 这是我的atm机,我知道当我想输入这两个功能时,它肯定会输入这两个功能,因为我一直在提醒我这样做。但是,控件始终保持启用状态 <script language="javascript" type="text/javascript"> function fun1(){ var input = $('#txtDocs'); input.removeAt

我正在尝试禁用我的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');
}
不过不行。我做错了什么

更新

现行代码

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"/>
函数fun1(){
警报(“1启用”);
$('#txtDocs').removeAttr('disabled');
警报(“2启用”);
}
函数fun2(){
警报(“1禁用”);
$('#txtDocs').prop('disabled',true);
警报(“2禁用”);
}
仍然不好:/我只看到了
警报(“1禁用”)
警报(“1启用”)
警报(“2启用”)
,所以没有通过fun2

注意

调试到我的代码中,并注意到在运行时,我的文本框实际上是一个文本区域。有什么意义吗?此外,它的ID将在开始处标记通常的“ctl00\u MainContentPlaceHolder”。

如果使用的是jQuery 1.6,则应该使用prop()+

$('#txtDocs').prop('disabled',true);
$('#txtDocs').prop('disabled',false);
根据jQuery文档

应使用.prop()方法来设置禁用和选中,而不是.attr()方法

如果使用的是jQuery 1.6,那么应该使用prop()+

$('#txtDocs').prop('disabled',true);
$('#txtDocs').prop('disabled',false);
根据jQuery文档

应使用.prop()方法来设置禁用和选中,而不是.attr()方法


disabled
是二进制属性,不是属性,因此需要使用:

$('#txtDocs').prop('disabled','disabled');
$('#txtDocs').removeAttr('disabled');

disabled
是二进制属性,不是属性,因此需要使用:

$('#txtDocs').prop('disabled','disabled');
$('#txtDocs').removeAttr('disabled');

看起来你应该这样做:

input.attr('disabled', true); // to disable

input.removeAttr('disabled'); // to enable

看起来你应该这样做:

input.attr('disabled', true); // to disable

input.removeAttr('disabled'); // to enable

您的
TextBox
ID“txtDocs”不会像那样出现在客户端上,因此javascript无法找到具有
ID=“txtDocs”
的元素。您需要将TextBox控件上的属性设置为
Static

<asp:TextBox ID="txtDocs" runat="server" Width="218px" ClientIDMode="Static" 
   Height="75px" TextMode="MultiLine" MaxLength="40" />

您的
TextBox
ID“txtDocs”不会像那样出现在客户端上,因此javascript无法找到具有
ID=“txtDocs”
的元素。您需要将TextBox控件上的属性设置为
Static

<asp:TextBox ID="txtDocs" runat="server" Width="218px" ClientIDMode="Static" 
   Height="75px" TextMode="MultiLine" MaxLength="40" />

加价 你错过了

<asp:TextBox ID="txtDocs" runat="server" Width="218px" 
  ClientIDMode="Static" Height="75px" TextMode="MultiLine" MaxLength="40" />
你可以改为使用FireBug来仔细扫描问题标记 你错过了

<asp:TextBox ID="txtDocs" runat="server" Width="218px" 
  ClientIDMode="Static" Height="75px" TextMode="MultiLine" MaxLength="40" />

取而代之的是,你用萤火虫仔细观察这个问题并不能真正解释它,但在花了很长时间尝试了这里的一切和我在网上能找到的一切之后,像这样引用我的对象

document.getElementById('ctl00_MainContentPlaceHolder_txtDocs').disabled = false;

请注意,ID前面没有#。此外,我不需要ClientMode,因为我在ID前面放了“ctl00_MainContentPlaceHolder_u”。

无法真正解释这一点,但在花了很长时间尝试了这里的所有内容以及我在网上能找到的所有内容后,像这样引用我的对象

document.getElementById('ctl00_MainContentPlaceHolder_txtDocs').disabled = false;

请注意,ID前面没有#。另外,我不需要ClientIDMode,因为我在ID前面放了“ctl00_MainContentPlaceHolder_”。

可能相关:可能相关:。NET与ID不兼容。它想拥有它们。改用CSS类名$('.txtDocs'),并为元素提供匹配的css类名,.NET不能很好地处理ID。它想拥有它们。改用CSS类名$('.txtDocs'),并为元素提供匹配的css类名,