jQuery フォーム バリデータ プラグインを使用しています。フォームには 5 つのチェック ボックスがあります。そのうちの最初のもの (マスター) がチェックされている場合、残りの 4 つがチェックされ、ユーザーがそれらを変更できないようにします。master がチェックされていない場合、残りの 4 つのボックスはユーザーが切り替え可能に戻ります。この機能は正常に動作します。今、私がやりたいことは、すべてのチェックボックスがオフになっている場合、フォームを無効にすることです。また、特定の領域 (checkBoxErrorHolder) に、チェック ボックスのみの検証エラー メッセージを格納することも必要です。他のエラー メッセージは、入力によってデフォルトの位置に表示されます。これが私がこれまでに持っているものです:
<script language="javascript">
$(function() {
$.validator.addMethod("validateCheckBoxes",
function (value, element, params) {
var master=false,
slave1=false,
slave2=false,
slave3=false,
slave4=false;
if ($("#master").attr("checked"))
master = true;
if ($("#slave1").attr("checked"))
slave1 = true;
if ($("#slave2").attr("checked"))
slave2 = true;
if ($("#slave3").attr("checked"))
slave3 = true;
if ($("#slave4").attr("checked"))
slave4 = true;
return (master || (slave1&&slave2&&slave3&&slave4));
},
"One or more check boxes must be checked");
$("#theForm").validate({
rules: {
first: required,
last: required,
email: {required: true, email: true},
master: { required: true,
validateCheckBoxes: true},
errorPlacement: function(error, element) {
$("#checkBoxErrorHolder").html(error);
}
}
slave1: { required: true,
validateCheckBoxes: true},
errorPlacement: function(error, element) {
$("#checkBoxErrorHolder").html(error);
}
}
slave2: { required: true,
validateCheckBoxes: true},
errorPlacement: function(error, element) {
$("#checkBoxErrorHolder").html(error);
}
}
slave3: { required: true,
validateCheckBoxes: true},
errorPlacement: function(error, element) {
$("#checkBoxErrorHolder").html(error);
}
}
slave4: { required: true,
validateCheckBoxes: true,
errorPlacement: function(error, element) {
$("#checkBoxErrorHolder").html(error);
}
}
},
messages: {
first: "required",
last: "required",
email: {
required: "Email address required",
email: "Please supply a valid email address"
}
}
});
});
</script>
<form id="theForm" ...>
<input type="text" name="first" value="" />
<input type="text" name="last" value="" />
<input type="text" name="email" value="" />
<input type="checkbox" id="master" value="master" class="validateCheckBoxes"/>
<input type="checkbox" id="slave1" value="slave1" class="validateCheckBoxes"/>
<input type="checkbox" id="slave2" value="slave2" class="validateCheckBoxes"/>
<input type="checkbox" id="slave3" value="slave3" class="validateCheckBoxes"/>
<input type="checkbox" id="slave4" value="slave4" class="validateCheckBoxes"/>
<input type="submit" />
</form>
<div id="checkBoxErrorHolder"></div>
言うまでもなく、期待した結果が得られていません。