2

私はこれらの2つのアプローチを持っています、そしてそれらは一種の...

問題は、最初のケースでは、そのクラス名を持つ最初の入力項目のみが機能することです。

    $.validator.addClassRules("NameField",{
        required: true,
            minlength: 2,
        uniqueName: {
          product: function() {
              return $(this).val();
          }
        },
        messages: {
           required: "Required Field",
           minlength: "Minimum 2 characters",
           uniqueName: "Name exists already",
           remote: ''
        }
    });

2番目の例の問題は、検証は機能するが、メッセージはリモートバリデーターには機能しないことです。

    $(".NameField").rules("add", {
        required: true,
            minlength: 2,
        uniqueName: {
          product: function() {
              return $(this).val();
          }
        },
        messages: {
           required: "Required Field",
           minlength: "Minimum 2 characters",
           uniqueName: "Name exists already",
           remote: ''
        }

    });

これはバリデーターのコードです

    $.validator.addMethod("unique", function(value, element, params) {
      return $.validator.methods.remote.call(this, value, element, {
          url: 'mypage',
          data: {
              : value
          }
      });
    });

何かアイデアはありますか?

4

1 に答える 1

4

で行ったように、検証メソッドをインラインで追加することはできませんuniqueName。最初にメソッドをバリデーターに追加することを定義する必要があります。次に、これをルールに追加できます。

HTML

<form class="testForm" action="" method="post">
    <input type="text" name="input1" class="NameField" />
    <input type="text" name="input2" class="NameField" />
    <input type="text" name="input3" class="NameField" />
    <input type="text" name="input4" class="NameField" />
    <input type="submit" />
</form>​

Javascript

$.validator.addMethod("uniqueName", function(value, element) {
    var parentForm = $(element).closest('form');
    if ($(parentForm.find('.NameField[value=' + value + ']')).size() > 1) {
        return false;
    }
    else {
        return true;
    }
}, "Name exists already");

$.validator.addClassRules({
    NameField: {
        required: true,
        minlength: 2,
        uniqueName: true
    }
});

$(".testForm").validate();​

デモ

messagesまた、関数を追加することはできませんのでご注意くださいaddClassRules

于 2012-12-06T00:56:31.773 に答える