Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/80.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript JQuery验证器-特定于规则的错误位置_Javascript_Jquery_Validation_Errorplacement - Fatal编程技术网

Javascript JQuery验证器-特定于规则的错误位置

Javascript JQuery验证器-特定于规则的错误位置,javascript,jquery,validation,errorplacement,Javascript,Jquery,Validation,Errorplacement,我正在使用jquery验证程序 我已将自定义规则应用于表单中的一组元素。这些输入还可能具有与之相关联的其他(标准)规则。如果元素不符合我的自定义规则,我需要将错误消息放在一个地方,如果元素不符合标准规则,我需要将错误消息放在另一个地方 我需要像这样的东西- errorPlacement: function(error, element) { if (error == MyCustomError) { // put my error at the top of the fo

我正在使用jquery验证程序

我已将自定义规则应用于表单中的一组元素。这些输入还可能具有与之相关联的其他(标准)规则。如果元素不符合我的自定义规则,我需要将错误消息放在一个地方,如果元素不符合标准规则,我需要将错误消息放在另一个地方

我需要像这样的东西-

errorPlacement: function(error, element) {
    if (error == MyCustomError) {
        // put my error at the top of the form
    } else {
        // put my error next to the element
    }
我看不出那个“错误”对象到底是什么(尝试用firebug向下钻取,但信息量不大)


突出显示选项更难,因为我甚至没有要使用的“error”参数。

error是jQuery Validate添加的整个错误标签HTML元素,即:

<label class="error">Error message here</label>

这仅在您使用单一语言时有效。知道如何获取规则类型吗?jQuery Validate在errorPlacement方法中默认不提供规则类型。但是您有元素,所以您可以这样做:
element.data('rule')
并直接在HTML中的元素上分配
data rule=“required”
。这样,您就可以在需要放置错误消息时使用它。如果有帮助,请告诉我!谢谢你回到我身边,@Smilyan。这听起来是一条有效的道路。在我的特定用例中,我最终使用控制器注入的jQuery validator数据属性创建了隐藏输入,因此在客户端,我只是添加了keyup事件来修改隐藏输入的值+触发器验证。我个人已经围绕整个jQuery validate创建了一个包装类。这样我就可以在任何表单上设置
。validate form
类开始验证,然后对于我希望在输入上添加类的每个方法,例如
。使用数据属性
data min length=“20”
验证最小长度
。然后,您可以在errorPlacement方法中使用这些类,并知道它们是用于此目的的(您也可以有多个验证方法)。这样,我根本不需要重复代码,只需将类用于任何新表单。
errorPlacement: function(error, element) {
if (error.text() == "Do not do this") {
    error.insertBefore("SELECT FIRST ELEMENT IN THE FORM HERE USING STANDARD JQUERY SELECTORS");
} else {
    error.insertAfter(element);
}