2010-11-30 47 views
1

我正在使用jQuery.validate(與ASP.NET MVC 1.0和xVal),並試圖覆蓋默認的錯誤顯示代碼,以便將錯誤範圍附加到元素,而不是追加錯誤圖像圖標與錯誤消息本身在圖像的標題/ alt屬性中。在正確的地方正確的圖標 - - 但是每次的validate()被調用時,增加了另一個驗證如何停止顯示多個錯誤消息的自定義jQuery.validate.errorPlacement函數?

jQuery.validator.setDefaults({ 
    errorPlacement: function(error, element) { 
    var errorTag = '<img src="error.png" title="' + error.html() + '" />'; 
    var errorImg = $(errorTag); 
    errorImg.insertAfter(element); 
    } 
}); 

這似乎很好地工作:

我是從我的網頁的頭調用此圖標到現場,所以你很快就會結束與每個輸入旁邊的數十個錯誤圖標...

我很明顯缺少一些屬性,會通知驗證插件,該字段已經有一個錯誤,但我不能解決什麼 - 我嘗試添加一個htmlfor = element.Id屬性,我嘗試添加字段驗證錯誤類,但我沒有得到任何在那裏,現在我被困

感謝,

-D-

回答

0

的問題是,jQuery.validate使用錯誤元素告訴與否的錯誤已經放置。你的代碼不會附加元素,因此每次調用都會重新添加圖像。

看到這一點,做到以下幾點:

jQuery.validator.setDefaults({ 
    errorPlacement: function(error, element) { 
    error.insertAfter(element); // Add the error element 

    var errorTag = '<img src="error.png" title="' + error.html() + '" />'; 
    var errorImg = $(errorTag); 
    errorImg.insertAfter(element); 
    } 
}); 

現在,你將只能看到圖像添加一次。 但是,errorPlacement不會再次調用,如果錯誤存在,所以你的errorTag不會改變。同樣,添加成功標籤時,圖像不會自動消失。

可能有辦法使用jQuery.validate方法來做到這一點,但老實說,這只是通過查看代碼。我仍然試圖弄清楚它究竟是如何處理的。

3

您必須檢查它是否存在:

jQuery.validator.setDefaults({ 
    errorPlacement: function(error, element) { 
    var errorTag = '<img src="error.png" id="myTag" title="' + error.html() + '" />'; 
    var errorImg = $(errorTag); 

    if ($('#myTag').length == 0) { 
     errorImg.insertAfter(element); 
    } 
    } 
}); 
-1

我已經發布了一篇博客文章here解釋如何去從開始做這個,結束了使用jQuery驗證客戶端和服務器端驗證。希望能幫助到你!

相關問題