0

jquery.validate フォーム フォーム検証を使用しています。問題は、フォーム 、s1_AMs1_PMs2_AMに約 40 の無線入力がありs2_PM、それぞれ約 10個のradio入力があることです。4 つのオプションのうち少なくとも 1 つをチェックする必要がありますが、4 つすべてをチェックする必要はありません。コードをclass="required"挿入すると、4 つのオプションすべてが必要になるため、正しくありません。どうすればこれを回避できますか?

理想的には、検証をそのまま維持したいのですが、ラジオが空の場合はアラートを追加します。

jQuery

jQuery.validator.messages.required = "";
$("#enroll").validate({
invalidHandler: function(e, validator) {
    var errors = validator.numberOfInvalids();
    if (errors) {
        var message = errors == 1
            ? 'You missed 1 required field'
            : 'You missed ' + errors + ' required fields';
        $("div.Error span").html(message);
        $("div.Error").show();
    } else {
        $("div.Error").hide();
    }
}
});

ラジオは動的です:

if($row['s1_AM_fill'] < $row['s1_AM_cap']) {
   $s1_AM .= '<input type="radio" name="s1_AM" id="s1_AM_'.$id.'" value="'.$id.'" />;
}

さらに、 for s1_PMs2_AMおよびの 3 つが追加されs2_PMます。

これが私がしたことですが、アラートが開始されると停止しません

$('#submit').click(function () {$("ul.courses").each(function(){
  $(this).find("input[type=radio]").each(function(){
    alert("You must select at least 1 available course");
});
return false;
});
4

1 に答える 1

1

プラグインの組み込みイベント ハンドラーに干渉する可能性しかない追加関数submitまたはハンドラー関数を使用しないでください。click

プラグインの組み込みaddMethod()メソッドを使用して新しいルールを作成するだけです。このようなもの...

jQuery.validator.addMethod('customrule', function() {
    return ($("input[name='s1_AM']:checked").val() || $("input[name='s1_PM']:checked").val() || $("input[name='s2_AM']:checked").val() || $("input[name='s2_PM']:checked").val());
}, 'Please select from at least one group' );

新しいルールは、4 つのグループのうち少なくとも 1 つradioが使用されているかどうかを確認します。ルールは次のように適用されます...

$(document).ready(function() {

    $('#enroll').validate({ // initialize the plugin
        rules: {
            's1_AM': {
                customrule: true
            },
            's1_PM': {
                customrule: true
            },
            's2_AM': {
                customrule: true
            },
            's2_PM': {
                customrule: true
            }
        },
        groups: { // use this option to consolidate the four messages into one
            groupname: "s1_AM s1_PM s2_AM s2_PM"
        }
    });

});

実際のデモ: http://jsfiddle.net/93jTZ/

独自のプロジェクトの仕様に従って、エラー配置関数を調整する必要があります。

その他のオプション: http://docs.jquery.com/Plugins/Validation/validate#toptions

于 2013-02-18T07:10:03.610 に答える