Jquery验证获取错误类型

时间:2013-03-26 23:41:17

标签: jquery jquery-validate

我正在使用jQuery Validation Plugin。有没有办法从jQuery表单验证中获取错误类型?例如,

$('mform').validate({
rules: {
    email: {
        required: true,
        maxlength: 40
    }
},
messages: {
    email: {
        required: "This is a required field.",
        maxlength: "Please enter less than 40 chars"
    }
},
errorPlacement: function(error, element) {
    error.appendTo(element.parent());
}
});

我想只放置从" required"生成的错误消息。 " div"内的错误在html页面的某个地方而不是将其附加到" element.parent()"。如果我可以获得错误类型,例如"需"或" maxlength"错误,我可以编写代码来执行此操作。

Can we get the jQuery Validate error type?

上述问题没有提到要添加的参数。所以再问一遍。

任何帮助表示赞赏!谢谢!

2 个答案:

答案 0 :(得分:1)

编辑:简答:

您要求的内容无法使用此插件完成。 (这也是非常罕见的情况,默认情况下无法完成的事情也可能无法完成完全没有。)

1)使用此插件作为起点编写您自己的自定义插件。自己做一个认真的尝试,然后回到SO并在遇到问题时发布一个更详细的新问题。

2)找一个已经做你想要的插件。但是,我怀疑是否存在,因为所请求的选项不是人们通常想要的。无论触发它的规则如何,一致且统一的用户体验意味着所有错误消息的处理方式都相同。


原始答案如下......


我想你可以像这样使用errorPlacement回调函数......

errorPlacement: function (error, element) {
    if (error.text().indexOf("required") !== -1) {
        error.insertAfter(element);
    } else {
        error.insertBefore(element);
    }
}

DEMO:http://jsfiddle.net/VVaKV/

但是,此解决方案存在一些缺陷,因为它只处理第一条错误消息上label初始位置。所有后续消息都将处于相同的初始位置,因为插件仅在创建后显示/隐藏消息label。 (它可以在每个字段上只有一种类型的消息的情况下很好地工作。)

我不认为任何other callback functions会更好用,因为你想要的东西没有内置到这个插件中。 (可能是因为大多数人认为当所有错误具有始终如一的统一外观时,用户不会感到困惑,IMO。)

我已经回答了几个关于这个插件的SO问题,而你的第一个问题是我遇到过的,要求能够以不同于另一个的方式处理一种错误消息。大多数人只是想要更一致的用户体验。

答案 1 :(得分:0)

试试这个:

errorPlacement: function(error, element) {
    var message = $(error).text(); 

    // here message is your error text message
}