重写errorPlacement时,jQuery验证未显示正确的错误

时间:2014-03-14 14:33:15

标签: javascript jquery twitter-bootstrap jquery-validate tooltip

我正在使用bootstrap中的工具提示替换默认错误,从而覆盖errorPlacement方法。但是当需要项目并且还有任何其他类型的验证时,所需的内容将取代任何其他错误。

我想知道我是否遗漏了验证中的某些内容,或者这是否是预期的行为。

jsfiddle中的一个例子是:http://jsfiddle.net/CwnUR/8/

$(function() {
    $('form').validate({
       errorElement: 'span',
       errorClass: 'error',
       validClass: 'success',
       errorPlacement: function (error, element) {

            element.attr({ 'title': error.text() }).tooltip({
                placement: 'right',
                trigger: 'manual',
                delay: { show: 500, hide: 5000 }
            }).tooltip('show');

        },
        success: function (label, element) {
            $(element).tooltip('destroy');
        }
    });

    $("#exampleInputEmail1").rules("add", {
        required: true,
        email: true
    });

    $("#exampleInputEmail2").rules("add", {
        required: true,
        equalTo: $("#exampleInputEmail1"),
        messages: {
            equalTo: 'Please retype the same email again.'
        }
    });

});

1 个答案:

答案 0 :(得分:2)

问题是工具提示未正确更新。当错误第一次触发时,它会显示正确的警告。例如,如果我单击使用空电子邮件地址提交,我会收到正确的错误,说明该字段是必需的。任何后续尝试获取任何其他错误(如无效的电子邮件地址)都不会显示。但是,我在点击提交之前写了一些文字,我收到了无效的电子邮件地址错误,然后取代了任何其他错误。

所以,我所做的就是破坏errorPlacement函数中的工具提示。

代码提取:

errorPlacement: function (error, element) {
    $(element).tooltip('destroy');
    element.attr({
        'title': error.text()
    }).tooltip({