禁用一个<input type =“text”/>为什么表单中的所有<input type =“text”/>都被禁用

时间:2014-08-13 07:00:42

标签: jquery

<table style="width: 100%;">
    <tr>
        <td>
<b>Year</b>
            <input type="checkbox" id="Year" />
        </td>
    </tr>
    <tr>
        <td>
<b>Desc</b>
            <br />
            <input type="text" id="Desc" name="Description" maxlength="35" value="" />
        </td>
    </tr>
    <tr>
        <td>
<b>No:</b>
            <input type="text" id="Num" name="Number" maxlength="20" value="<%= No %>" />
        </td>
    </tr>
</table>

当我使用时:

$(document).ready(function () {
    $(":text,#Desc").attr("disabled", "disabled");
});

这会禁用该html页面中的所有文本框,怎么做?

相反,当我使用$('#Desc').attr('disabled', true);时,它只会禁用该特定文本框。

4 个答案:

答案 0 :(得分:3)

根据您提供的代码,

$(":text,#Desc")

您使用了多个选择器,因此它包含两个选择器

  1. ":text"
  2. "#Desc"
  3. 基本上第一个选择所有输入元素。

答案 1 :(得分:0)

使用prop()而不是attr(),最好设置check,disabled,readonly等属性

此外,您应该仅使用ID来确保您没有选择共享同一个类且ID唯一的所有元素

$(document.ready(function() { 
    $("#Desc").prop("disabled", true);
});

答案 2 :(得分:0)

您有<input type="text" id="Desc..."

选择器在这里是错误的:

$(":text,#Desc").attr("disabled","disabled");

因为这说#Desc child:text但你没有。

所以,这应该可以正常工作:

$("#Desc").attr("disabled","disabled");

或者,您可以这样使用:

$("#Desc:text").attr("disabled","disabled");

但在我看来,这没有任何意义,因为Id是唯一的,你可以称之为id。

但是如果你分配了这个类,你可以这样使用它:

 $(".Desc:text").attr("disabled","disabled");

这是明智的。

玩得开心!

答案 3 :(得分:0)

$(':text')选择所有类型为text的输入字段。选择器中的,就像:首先选择所有<input type="text" />,然后选择#Desc。只需删除:text,

即可