0

フィールド名ではなくクラス名で定義される特定のルールがあります。

$.validator.addClassRules("fillone", {
        require_from_group: [1,".fillone"]
    });

そのためのデフォルトのエラーメッセージをオーバーライドしたいので、これを試しました:

$.validator.addMethod("xrequire_from_group", $.validator.methods.required, 'Hey nutter, pick at least one');

$.validator.addClassRules("fillone", {
  xrequire_from_group: [1, ".fillone"]
});

エイリアスをいじらずに最初に動作することを証明するためのフィドルがあります:

http://jsfiddle.net/houmie/fg6ae/1/

エイリアスの後に得られるものは次のとおりです。

http://jsfiddle.net/houmie/m9uNK/1/

ご覧のとおり、それはそれを壊します。どちらのメッセージも、1 つのフィールドだけを入力すると消えます。しかし、そうではありません。これはバグですか?

4

2 に答える 2

0

私がこれを正しく理解していれば、両方のフィールドに 1 つのメッセージを表示するオプションを使用するgroupsことをお勧めします。論理的には、両方のフィールドに入力する必要はないため、両方のフィールドの横にエラー メッセージが表示されることはありません。ユーザーに 2 つのうちの 1 つを選択するように伝える 1 つのメッセージの方が理にかなっているように思えます。

オプションを使用して、必要なerrorPlacement:場所に配置する必要があります。

実際のデモ: http://jsfiddle.net/m9uNK/2/

var validator = $(form).validate({
    groups: {
        groupname: "field1 field2"  // as per docs, "groupname" is arbitrary
    },
    errorPlacement: function (error, element) {
        if (element.attr("name") == "field1" || element.attr("name") == "field2") {
            error.insertAfter("[name='field2']");  // adjust this accordingly
        } else {
            error.insertAfter(element);  // this is default placement for everything else
        }
    }
});
于 2013-01-09T23:54:10.570 に答える
0

私はついに実用的な解決策を見つけました.コードに微妙な間違いがありました.

$.validator.addMethod("xrequire_from_group", $.validator.methods.required, 'Hey nutter, pick at least one');

と置換する

$.validator.addMethod("xrequire_from_group", $.validator.methods.require_from_group, 'Hey nutter, pick at least one');

今、ついに動作します!!!

于 2013-01-10T10:57:13.413 に答える