2010-10-06 128 views
1

我跟着Nadia在這裏jQuery override default validation error message display (Css) Popup/Tooltip like優秀的職位,它的工作很棒。但是我正在處理的表單通過ajax提交,表單上方的表格在成功時更新表格隨着每次提交而增長,並且表單的位置在頁面上滑落。 Nadia的解決方案在調用errorPlacement函數時提供了錯誤消息。問題是errorPlacement僅在第一次發生錯誤時被調用。當用戶糾正錯誤時,div被隱藏但不被移除。所以下一次驗證失敗時,validate函數只會替換div包裝器的html。因此絕對位置是關閉的,因爲它是在表被修改之前相對於輸入計算的。有沒有人遇到這個問題,並有一個解決方法?下面是我正在使用的錯誤位置函數,它是直接在鏈接文章中使用Nadia的解決方案。jQuery驗證errorPlacement問題時,添加工具提示樣式錯誤信息

errorPlacement: function(error, element) { 
        offset = element.offset(); 
        error.insertBefore(element) 
        error.addClass('message'); // add a class to the wrapper 
        error.css('position', 'absolute'); 
        error.css('left', offset.left + element.outerWidth()); 
        error.css('top', offset.top); 
       } 

回答

7

不知道,如果你正面臨着同樣的問題我有或沒有,但一個哈克解決方案,我在過去使用是消除在showErrors事件處理程序中的錯誤。這迫使jQuery.Validate再次爲每個錯誤調用errorPlacement。

showErrors: function (errorMap, errorList) { 
     for (var i = 0; errorList[i]; i++) { 
      var element = this.errorList[i].element; 
      this.errorsFor(element).remove(); 
     } 
     this.defaultShowErrors(); 
    } 
+0

是的,這是訣竅。謝謝! – 2010-10-08 13:59:54

+0

我錯過了每次觸發驗證時都會調用的方法。這個解決方法使我的一天。太好了!謝謝! – metamagicson 2013-12-03 10:43:06