0

我正在尝试禁用我的 Aspx 页面上的一些控件,但无法使其正常工作。我已经尝试过 Javascript 和 JQuery,所以我知道我必须做一些简单的错误。

这就是我的自动取款机,我知道它肯定会在我想要的时候进入这两个功能,因为我一直在提醒我这样说。但是,控件始终保持启用状态!

<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 ...

笔记

调试到我的代码并注意到在运行时我的文本框实际上是一个文本区域。有什么意义吗?它的 ID 也会在开头标记通常的“ctl00_MainContentPlaceHolder_”。

4

6 回答 6

3

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

$('#txtDocs').prop('disabled',true);
$('#txtDocs').prop('disabled',false);

根据 jQuery 文档http://api.jquery.com/prop/

应该使用 .prop() 方法来设置禁用和检查,而不是 .attr() 方法。

于 2012-07-31T14:50:13.927 回答
1

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

$('#txtDocs').prop('disabled','disabled');
$('#txtDocs').removeAttr('disabled');
于 2012-07-31T14:51:28.957 回答
0

看起来你应该这样做:

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

input.removeAttr('disabled'); // to enable
于 2012-07-31T14:52:01.717 回答
0

您的TextBoxID“txtDocs”不会像那样出现在客户端上,因此 javascript 无法找到一个元素,id="txtDocs"您需要将ClientIDModeTextBox 控件上的属性设置为Static

<asp:TextBox ID="txtDocs" runat="server" Width="218px" ClientIDMode="Static" 
   Height="75px" TextMode="MultiLine" MaxLength="40" />
于 2012-07-31T14:52:25.350 回答
0

标记

您缺少ClientIDMode ...

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

JavaScript

document.getElementById('IdOfTheTextbox').disabled = true/false;

您改为 FireBug 仔细扫描问题

于 2012-07-31T14:52:48.130 回答
0

无法真正解释它,但是花了很长时间在这里尝试了所有东西以及我在网上可以找到的所有东西,像这样引用我的对象;

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

请注意 ID 前缺少 #。此外,我不需要 ClientIDMode,因为我将“ctl00_MainContentPlaceHolder_”放在我的 ID 之前。

于 2012-08-01T07:49:21.277 回答