2015-10-09 76 views
1

我使用jQuery验证,我想以这种格式错误元素:JQuery验证自定义错误元

<div class="error-holder" data-error-message="Please correct this field"></div>

我已经在使用errorPlacement和errorElement选项尝试:

errorPlacement: function (error, element) { 
     error = error.attr("class", "error-holder").attr("data-error-message", error.text()).text(""); 
     error.insertAfter(element); 
    }, 
    errorElement: "div" 

这产生了正确的错误元素,但是当试图提交表单(与其他错误)时,错误元素每次都被复制。

我怎样才能得到正确的错误元素没有重复?

+0

为什么你需要把错误信息放在一个属性中?这是一个*动态创建的元素。请解释为什么您不能使用标准方式来设置自定义错误消息。 – Sparky

回答

0

的复制被推测被把这个错误容器您的HTML标记内的时间提前,然后努力的目标就引起...

error = error.attr("class", "error-holder").attr("data-error-message", .... 

该插件自动创建除了你的错误元素并且不知道(找不到)要切换哪一个。


您可以将错误容器设置为div ...

errorElement: "div" 

,你可以设置错误类error-holder ...

errorClass: "error-holder" 

然而,没有选项用于设置错误消息容器的自定义属性。目前还不清楚为什么当插件动态创建并自动切换错误消息时,您需要将错误消息放入属性中。

如果您需要自定义错误消息,有多种标准方法可以实现此目的,而不需要事先创建静态消息元素。

DEMO:http://jsfiddle.net/okwwrsd9/

$(document).ready(function() { 

    $('#myform').validate({ 
     errorElement: "div", 
     errorClass: "error-holder", 
     rules: { 
      foo: { 
       required: true 
      } 
     }, 
     messages: { 
      foo: { 
       required: "Please correct this field" 
      } 
     } 
    }); 

}); 
1

我首先检查是否DIV已经存在的错误解决了这个问题:

errorPlacement: function (error, element) { 
     error = error.attr("class", "error-holder").attr("data-error-message", error.text()).text(""); 
     if ($("div[for=" + element.attr("id") + "]").length == 0) { 
      error.insertAfter(element); 
     } 
    } 

我需要的,因为在CSS设计要求此特定错误股利。

Thx为答复!

+0

这是我需要修改mdbootstrap的不显眼验证的缺失链接,谢谢。 :) –