maxメソッドと関数をパラメーターとして使用してルールを作成します。これは、フィールドが検証されたとき、つまりフィールドで element() が呼び出されたときに評価されます。
ルール定義は次のようになります
rules: {
field1:
{
required: true,
max: function () { return $("#mycheckbox:checked").length ? 100 : 50; }
}
}
また、ルールが変更された場合、または適用されなくなったエラー メッセージが残る可能性がある場合は、ターゲット フィールドを再検証します。
$('#mycheckbox').on('change', function () {
$('#field1.error').each(function () {
$(this).valid();
});
});
これは、フィールドがすでに検証されている場合にのみ再検証し、デフォルトの errorClass 'error' の存在をチェックすることに注意してください。
このようなhtmlで
<input name="mycheckbox" id="mycheckbox" type="checkbox" />
<input name="field1" id="field1">
<input type="submit" />
完全な JavaScript コードはこのようなものです。ここでフィドルを見つけてください
$(function () {
$("form").validate({
rules: {
field1:
{
required: true,
max: function () {
return $("#mycheckbox:checked").length ? 100 : 50;
}
}
},
submitHandler: function () {
alert('form ok');
}
});
$('#mycheckbox').on('change', function () {
$('#field1.error').each(function () {
$(this).valid();
});
});
});