添加工具提示样式错误消息时,jquery验证errorPlacement问题

时间:2010-10-06 21:03:52

标签: jquery validation

我跟随Nadia在jQuery override default validation error message display (Css) Popup/Tooltip like发表的精彩文章,效果很好。但我正在处理的表单是通过ajax提交的,表单上方的表格会在成功时更新。表格会随着每次提交而增长,因此表格的位置会在页面上向下滑动。当调用errorPlacement函数时,Nadia的解决方案会出现错误消息。问题是errorPlacement仅在第一次发生错误时被调用。当用户更正错误时,div被隐藏但未被删除。因此,下次验证失败时,validate函数仅替换div包装器的html。结果,绝对位置关闭,因为它是在修改表之前相对于输入计算的。有没有人碰到这个并有一个解决方法?下面是我正在使用的错误放置功能,它直接来自链接帖子中的Nadia解决方案。

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);
                }

1 个答案:

答案 0 :(得分:7)

不确定您是否面临同样的问题,但我过去使用的一个hacky解决方案是删除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();
    }