引用 OP 的评论:
“这并不完全奏效,因为如果我启用和禁用一个复选框,那么表单输入会禁用然后再次启用,此时 clientConfigValidation.valid() 说 true 但是,在提交时,它意识到它实际上不是有效的......非常奇怪的”
这是由有关复选框值何时实际更改的时间问题引起的。
要修复它,请将您的事件更改change
为一个click
事件,以更立即地捕获您的复选框和单选按钮。这似乎并没有改变其余输入元素的行为方式,因为您必须click
在使用它们时对它们进行操作change
。
$('input, select, textarea').on('click', checkForm);
function checkForm(){
$("input[type=submit]")
.prop("disabled", !($('#clientConfigurationForm').valid()));
}
工作演示:http: //jsfiddle.net/8umJ6/
如果您发现一种输入类型相对于另一种输入类型有任何问题,您可以通过为不同的输入类型指定不同的事件来调整代码。
$('input[type="checkbox"], input[type="radio"]').on('click', checkForm);
$('input[type="text"], select, textarea').on('change', checkForm);
function checkForm(){
$('input[type="submit"]')
.prop("disabled", !($('#clientConfigurationForm').valid()));
}