2013-05-16 108 views
1

我想創建一個使用jquery.validation插件的驗證摘要。jQuery驗證插件錯誤摘要

我到目前爲止是這樣的:

// Validate order form before submitting it 
$('.order-material-form').validate({ 
    onkeyup: false, 
    onclick: false, 
    showErrors: function (errorMap, errorList) {    
     $.each(errorList, function() { 
      var element = this.element; 
      var labelText = $(element).prev('p').find("label").text(); 
      var error = this.message; 

      errorSummaryList.append($("<li>").text(labelText + ": " + error)); 
      errorSummaryList.fadeIn('fast'); 
     }); 
     this.defaultShowErrors(); 
    }, 
    highlight: function (element, errorClass) { 
     $(element).css({ "border": "1px solid #ff0000", "color": "#ff0000" }); 
    }, 
    unhighlight: function(element, errorClass) { 
     $(element).css({ "border": "1px solid #555555", "color": "#555555" }); 
    }, 
    errorPlacement: function() {} 
}); 

這地方在錯誤我errorSummaryList(這是一個無序列表),但由於它的設置錯誤追加到彙總列表,它不斷追加如果/當用戶切換輸入時,一遍又一遍的相同的錯誤消息等。

我有一種奇怪的感覺,這不是使用jquery.validation插件創建摘要的正確方法。

有誰知道如何做到這一點?

感謝提前:)

+0

還有就是文檔的摘要列表的例子。 – Sparky

回答

1

試試這個:

showErrors: function (errorMap, errorList) {  

    var errorLiArray = $.map(errorList, function(error){ 
     var labelText = $(error.element).prev('p').find("label").text(); 

     return "<li>" + labelText + ": " + error.message+ "</li>"; 
    }); 

    errorSummaryList.html(errorLiArray.join('')) 

    errorSummaryList.fadeIn('fast'); 

    this.defaultShowErrors(); 
}, 
+1

嗨果醬,非常感謝! :-)然而,當我將光標放在發生錯誤的字段中時,摘要消失並僅顯示第一個錯誤字段,但確實有效。我必須承認,我迷失了使用這個插件;-) – bomortensen

+0

當前行爲的屏幕截圖:http://www.screenr.com/BfI7在我點擊提交按鈕之前,它沒有驗證'quired'字段。 – bomortensen

+0

@bomortensen我沒有使用這個插件,所以我不知道什麼是錯的(或者即使它是一個功能:P)。無論如何,很高興幫助:) – JAM