jQuery验证和组 - 如何避免errorPlacement使用?

时间:2012-02-09 19:48:37

标签: jquery-validate

groups使用的当前example表示应定义errorPlacement,其中字段名称是硬编码的:

$("#myform").validate({
  groups: {
    username: "fname lname"
  },
  errorPlacement: function(error, element) {
     if (element.attr("name") == "fname" 
                 || element.attr("name") == "lname" )
       error.insertAfter("#lastname");
     else
       error.insertAfter(element);
   },
   debug:true
 })

有没有办法摆脱带有字段名称的errorPlacement?错误消息应始终位于组中最后一个元素之后。

1 个答案:

答案 0 :(得分:4)

我认为你将不得不使用errorPlacement,但是每次都可以通过一些技巧将错误集中在群组之间:

$("#test-form").validate({
    groups: { 
      username: "fname lname",
      range: "min max"
    },
    errorPlacement: function ($error, $element) {
      var elementName = $element.attr("name"),
          lastInGroup = $.map(this.groups, function(fields, name) {
            var fieldsArr;
            if (fields.indexOf(elementName) >= 0) {
              fieldsArr = fields.split(" ");
              return fieldsArr[fieldsArr.length - 1];
            } else {
              return null;
            }
          })[0];

      if (lastInGroup) {      
          $error.insertAfter($("input[name='" + lastInGroup + "']"));
      } else {
          $error.insertAfter($element);
      }
    }
});

基本上,访问您定义的groups对象并找到每个组中的最后一个字段。在该字段后附加错误。

示例: http://jsbin.com/acenic/