22

デフォルトのオプションがないため、jQuery検証プラグインを使用してチェックボックスを検証しています。1つを選択し、最大2つのチェックボックスを選択できます。これらが基準です。エラーが発生せず、検証されていません。私はそれを以下のように拡張しています、

  <input type="checkbox" name="test[]" />x
   <input type="checkbox" name="test[]"  />y
   <input type="checkbox" name="test[]" />z
     $("#formid").validate({
  rules: {
    test[]: { 

            required: function(elem)
            {
                return $("input.select:checked").length > 0;
            }

          },
messages: { 

    test[]: "You must check at least 1 box"
  }
 });
4

4 に答える 4

55

コードにいくつかの問題がありました。

1)}内に 閉じ括弧 ,がありませんrules

2) この場合、requiredルールに関数を使用する理由はありません。デフォルトでは、プラグインは問題なく処理checkboxおよびradio入力できるため、使用するtrueだけで十分です。ただし、これは単に元の関数と同じロジックを実行し、少なくとも 1 つがチェックされていることを確認します。

3) また、最大 2 つだけをチェックする場合は、maxlengthルールを適用する必要があります。

4)messagesオプションにルール仕様がありませんでし た。動作しますが、1 つのカスタム メッセージが同じフィールドのすべてのルールに適用されます。

5)name属性に括弧が含まれている 場合は、引用符で囲む必要があります

デモ: http://jsfiddle.net/K6Wvk/

$(document).ready(function () {

    $('#formid').validate({ // initialize the plugin
        rules: {
            'test[]': {
                required: true,
                maxlength: 2
            }
        },
        messages: {
            'test[]': {
                required: "You must check at least 1 box",
                maxlength: "Check no more than {0} boxes"
            }
        }
    });

});
于 2013-03-16T18:40:00.443 に答える
-1

簡単な方法があります

HTML:

<input type="checkbox" name="test[]" />x
<input type="checkbox" name="test[]"  />y
<input type="checkbox" name="test[]" />z
<button type="button" id="submit">Submit</button>

Jクエリ:

$("#submit").on("click",function(){
    if (($("input[name*='test']:checked").length)<=0) {
        alert("You must check at least 1 box");
    }
    return true;
});

これには、プラグインは必要ありません。楽しみ;)

于 2014-09-17T13:48:27.650 に答える