2010-10-06 129 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