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()));
}