【发布时间】:2016-10-15 12:28:01
【问题描述】:
我想禁用表单中的所有字段,然后只启用之前已启用的字段。但是当我尝试这样做时,所有字段(包括预先禁用的字段)都将被启用。
$('body').on('click', 'input[type="button"]', function() {
disable_fields(true);
setTimeout(function() {
disable_fields(false);
}, 1000);
});
function disable_fields(t) {
var fields = $('input,textarea,select,[type="file"]');
fields.each(function(index, element) {
if($(this).is(':disabled')) {
is_disabled = true;
}
console.log(fields.attr('name')+' - '+is_disabled);
$(this).prop('disabled', t);
console.log(fields.attr('name')+' - '+is_disabled);
});
}
我怎样才能做到这一点?
【问题讨论】:
-
一旦您触发
disable_fields()函数,就无法知道哪些字段最初被禁用。一种方法是将文档就绪的每个字段的disabled状态存储在数据属性/对象中,然后仅对不具有原始禁用状态的字段执行切换。 -
为什么要故意启用不想启用的字段?通过不启用
enable_all函数内的这些字段(更改名称会变得很糟糕,但它会让您的生活更轻松),可以轻松避免整个问题。 -
因为当我点击表单中的按钮时,我想禁用所有字段。如果发生任何错误,我想启用在我点击按钮之前启用的那些字段。
标签: jquery forms input disabled-input