使用jQuery禁用除表单中的某些输入元素之外的所有输入元素

时间:2015-03-16 13:37:18

标签: javascript jquery html

我试图使用jquery禁用表单中的几乎所有输入元素,但我需要启用一些输入元素。例如:

$(document).ready(function () {
    $("#document :input[name!='tloEnable']).attr("disabled", true);
});

这对我使用相同名称的元素非常有用' tloEnable'。但是,还有一些其他元素具有不同的名称属性(filename,notifyUsers,notifyTeam)。如何在禁用剩余输入元素的同时包含它们?

$(document).ready(function () {
    $("#document :input[name!='tloEnable], [name!='filename'], [name!='notifyUsers'], [name!='notifyTeam']).attr("disabled", true);
});

3 个答案:

答案 0 :(得分:7)

使用.not() function并传递选择器;匹配的元素将被排除在外:

$(document).ready(function () {
    $(":input").not("[name=tloEnable], [name=filename], [name=notifyUsers]")
        .prop("disabled", true);
});

:not() selector的工作方式相同:

$(document).ready(function () {
    $(":input:not([name=tloEnable], [name=filename], [name=notifyUsers])")
        .prop("disabled", true);
});

答案 1 :(得分:2)

提供您希望禁用类disabled-inputs等类的输入。然后简单地说:

Jquery 1.6:

$(".disabled-inputs").prop('disabled', true);  

jQuery 1.5及以下版本:

$(".disabled-inputs").attr('disabled','disabled');

答案 2 :(得分:0)

Salman A的解决方案是我可能会使用的(假设您不能只为字段指定一个类名),但您也可以考虑使用jQuery's filter()来仅选择符合您的标准。

我们只是检查name列表中不存在fieldsNotToBeDisabled,但您可以轻松扩展它以测试其他任何内容。

var fieldsNotToBeDisabled = new Array("tloEnable", "filename", "notifyUsers", "notifyTeam");

$("form input").filter(function(index){
    return fieldsNotToBeDisabled.indexOf($(this).attr("name"))<0;
}).prop("disabled", true);
input {border:1px solid green; }
input:disabled { border-color: red; background:#eee;}
<form>
    <input name="tloEnable" />
    <input name="filename" />
    <input name="notifyUsers" />
    <input name="notifyTeam" />
    <input name="testa" />
    <input name="testb" />
    <input name="testc" />
</form>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>