2015-10-14 54 views
0

我有一個使用jQuery驗證的表單,除了這一個問題,它工作得很好。要重現該問題,請填寫表單中的所有字段,然後隨機選擇字段並刪除輸入。繼續這樣做,直到錯誤消息沒有出現在頂部,那就是問題所在。Jquery驗證不驗證輸入被刪除

我不知道爲什麼它不會驗證輸入被刪除時的字段。如果任何人都可以告訴我爲什麼這樣做,那會很好。我無法在jquery validate網站上的任何演示中重現它,所以我認爲它與我設置的方式有關。

JSFIDDLE

$.validator.addMethod("notEqual", function(value, element, param) { 
     return this.optional(element) || value != param; 
    }); 

$("#wizardForm").validate({ 
    rules: { 
     firstname: { 
      required:{ 
       depends:function(){ 
        $(this).val($.trim($(this).val())); 
        return true; 
       } 
      }, 
      pattern: /^[a-zA-Z]+([\s]+)?['-]?([a-zA-Z]+)?$/ 
     }, 
     lastname: { 
      required: { 
       depends:function(){ 
        $(this).val($.trim($(this).val())); 
        return true; 
       } 
      }, 
      pattern: /^[a-zA-Z]+([\s]+)?['-]?([a-zA-Z]+)?$/ 
     }, 
     email: { 
      required: { 
       depends:function(){ 
        $(this).val($.trim($(this).val())); 
        return true; 
       } 
      }, 
      email: true, 
      notEqual: "[email protected]", 
      pattern: /^(.)+(@)(.)+[.](.)+$/ 
     }, 
     password: { 
      required: true, 
      equalTo: { 
       param: "#PWconfirm", 
       depends: function(element) { 
        return $("#wizardForm #PWconfirm").val(); 
       } 
      } 
     }, 
     PWconfirm: { 
      required: true 
     }, 
     company: { 
      required: true 
     }, 
     zip: { 
      required: true 
     },   
     country: "required" 
    }, 
    errorLabelContainer: ".validation-error-msg", 
    wrapper: "li", 
    errorClass: "validation-error", 
    messages: { 
     firstname: { 
      required: "The 'First Name' field cannot be empty.", 
      pattern: "The 'First Name' field must not contain numbers or special characters." 
     }, 
     lastname: { 
      required: "The 'Last Name' field cannot be empty.", 
      pattern: "The 'Last Name' field must not contain numbers or special characters." 
     }, 
     email: { 
      required: "The 'Email Address' field cannot be empty.", 
      email: "The 'Email Address' must be in a valid email format.", 
      notEqual: "This email address is reserved, please use another.", 
      pattern: "The 'Email Address' must be in a valid email format." 
     }, 
     password: { 
      required: "The 'Password' field cannot be empty.", 
      equalTo: "Password fields do not match!" 
     }, 
     company: "The 'Company Name' field cannot be empty.", 
     zip: "The 'Zip Code' field cannot be empty.", 
     PWconfirm: "The 'Retype Password' field cannot be empty.", 
     country: "The 'Country' field needs a valid selection." 
    } 
}); 

先感謝您的任何意見。

+0

它似乎工作正常任何輸入值被隨機刪除。發生時你有確切的情況嗎? – DinoMyte

+0

當我填寫每個字段時,對我來說這種情況非常一致,然後刪除重新輸入的密碼,然後刪除姓氏。我也在Chrome中執行此操作。 – Jmh2013

+0

你的小提琴工作正常。 –

回答

0

報價OP的評論:

我要指出,我從來沒有點擊提交按鈕。填寫所有字段,然後取出一些隨機字段。

它被稱爲「懶惰驗證」。這就是插件的設計原理。基本上,在第一次點擊提交按鈕之前,空字段的錯誤會被忽略。

documentation:場被標記爲無效

之前,驗證是懶惰:提交表單的第一次之前,用戶可以通過標籤領域沒有得到惱人的消息 - 它們不會有機會實際輸入正確的值之前得到竊聽

+0

這是有道理的。我絕對誤解了默認行爲,認爲這是一個問題。感謝您的解釋和文檔鏈接。 – Jmh2013