2014-03-24 25 views
1

我可以幫我的表單請jQuery驗證插件 - 處理錯誤消息

我使用驗證插件。

http://jsfiddle.net/Xroad/2pLS2/23/

我想對所有空字段一個總的消息,一旦該領域充滿了有關消息下方的自定義字段(如「請輸入至少2個字符」)

如何我可以這樣做嗎?

$.validator.setDefaults({ 
    errorClass: 'error-image', 
    validClass: 'ok-image', 
    errorElement: 'span', 
    errorContainer: '#invalid-empty', 
    errorPlacement: function(error,element) { 
    return true; 
    } 
}); 

$("#form-general").validate({ 

    rules: { 
     firstname: { 
      minlength: 2, 
      maxlength: 25 
     }, 
     name: { 
      minlength: 2, 
      maxlength: 25 
     }, 
     email: { 
      email: true 
     } 
    } 

}); 
+0

我剛剛遇到['invalidHandler'](http://jqueryvalidation.org/validate/)。 *「在提交無效表單時回調自定義代碼,第一個參數爲事件對象,第二個爲確認器。」* – 13ruce1337

回答

1

可以使用messages選項來指定自定義消息。

查看此JSFiddle的演示。

添加自定義messages的選擇和刪除空errorPlacement

$.validator.setDefaults({ 
    errorClass: 'error-image', 
    validClass: 'ok-image', 
    errorElement: 'span', 
    errorContainer: '#invalid-empty', 
    //errorPlacement: function(error,element) { 
    // return true; 
    //}, 
    messages: { 
    name: { 
     required: "", 
     minlength: "Dude, your first name is longer than that..." 
    }, 
    firstname: { 
     required: "", 
     minlength: "I know you can type at least one more character!" 
    }, 
    email: { 
     required: "", 
     email: "Your email address must be in the format of [email protected]" 
    }, 
    telephone: "", 
    message: "" 
    } 
}); 

就指定要爲忽略默認消息,並編寫自定義的消息任何規則。

由於您只希望在頂部顯示通用的required消息,因此只需將required消息覆蓋爲空字符串,以便在輸入下方不顯示任何內容。

+0

謝謝。實際上,我希望所有空字段都有一個單一的常規消息,並且一旦該字段在有關消息下面填充了自定義字段。 – Xroad

+0

@Xroad我更新了JavaScript和JSFiddle以符合您的規格;) – ryanwinchester

+0

我沒有想過要將「必填」自定義消息留空。有用 !謝謝 ! – Xroad

0

只是刪除您的errorPlacement選項,它會自動做到這一點。通過這樣的:

errorPlacement: function(error,element) { 
    return true; 
} 

你告訴jQuery驗證不放置錯誤消息。刪除它將允許插件放置消息,這聽起來像你想要的。如果您想跳過所需的消息但允許其他消息,則可能需要使用errorPlacement的error部分。它包含消息字符串,所以它會說一些關於「required」的內容,您可以使用RegExp並不顯示。

也許:

errorPlacement: function(error,element) { 
    if (/required/.test(error.text()){ 
     return false; 
    } else { 
     error.insertAfter(element); 
    } 
} 
+0

感謝您的幫助。事實上,我沒有想過將「必需的」自定義消息留空。 – Xroad