基於

2012-12-05 24 views
2

jQuery的自定義驗證我已經得到了這兩種方法,以及他們的工作,有點...基於

的問題是,在第一種情況下,只與類名稱的第一個輸入項工作。

$.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: '' 
     } 
    }); 

與第二示例中的問題是,驗證工作,但該消息用於遠程驗證

$(".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

爲您與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();​ 

Demo

另外請注意,你不能在addClassRules功能添加messages

+0

感謝,我給它一個旋轉 – Daniel