我试图使用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);
});
答案 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>