我有一个包含大约 25 个输入(文本、单选框和复选框)的扩展表单。我希望当我单击打开 jQuery 对话框的按钮时,加载表单并将除其中 5 个之外的所有字段设置为禁用。看起来很简单,但我希望它成为一个“通用”功能。我的意思是,我有这个方法:
function disableInputs(jQueryElement, exceptions, booleanClean) {
//Some stuff
}
我想从 中获取所有输入jQueryElement
,但忽略所有具有 id 的元素exceptions
。Exceptions
是一个像这样的对象:
var exceptions = {
0: 'clientId',
1: 'clientName',
2: 'clientFirstSurname',
3: 'clientSecondSurname',
4: 'clientAlias'
}
这是我的完整代码,也是我测试过的,但这是使它工作的唯一方法,如果我收到第三个参数 ( booleanClean
),它将设置value=''
为 all inputs
,而不是设置为未排除的元素被禁用。该布尔值用于检查您是否要在调用此函数时清除输入:
function disableInputs(jQueryElement, exceptions, booleanClean) {
var inputs = jQueryElement.find('input');
for (var i = 0; i < inputs.length; i++) {
inputs[i].setAttribute('disabled', true);
for (var attr in exceptions) {
if (inputs[i].getAttribute('id') === exceptions[attr]) {
inputs[i].removeAttribute('disabled');
} else {
if (booleanClean === true) {
inputs[i].value = null;
}
}
}
}
}
我知道为什么不使用干净的“选项”。我想要的是我必须把它放在哪里才能正确地做到这一点,或者我是否可以在我获取输入时设置一个条件以仅获取未排除的输入(优选的第二个优化选项并且不为每个输入设置属性和如果被排除在外,请删除它们。似乎更容易工作)。