如何在不复制相同类型的消息的情况下显示动态表单的jQuery验证器错误消息

时间:2011-04-07 15:02:31

标签: jquery jquery-plugins jquery-validate validation

我有一张表格,代表发票的输入表格,行数是动态的,具体取决于用户投放到发票中的产品数量,

每行的输入字段数量始终相同,它们都表示相同的内容,因此具有相同的验证规则。

<form id="myform" name="myform" action="" method="">
<table>
    <tr>
        <td>
            <input type="text" name="amount_id1" id="amount_id1" value=""/>
        </td>
        <td>
            <input type="text" name="price_id1" id="amount_id1" value=""/>
        </td>
        ....
    </tr>
    <tr>
        <td>
            <input type="text" name="amount_id2" id="amount_id2" value=""/>
        </td>
        <td>
            <input type="text" name="price_id2" id="price_id2" value=""/>
        </td>
        .....
    </tr>
    ....
</table>
</form>

我正在使用jQuery验证插件: validation plugin

现在我想要发生的是,我想将所有错误包装到一个容器中,因为在每个输入字段旁边显示它们都很麻烦。

我知道这可以通过包装器设置和errorLabelContainer

来实现

但是,我不想显示重复的消息:
对于用户犯了错误的每个和所有10个字段,显示“数量需要为正数”x10次是没有用的...
所以我想要的是,每种输入字段(无论是金额,价格,折扣,增值税还是其他) 如果输入错误,我想为这种错误显示1条错误消息 例如:
金额有必要,数字为班级规则 如果用户忘记在不同的地方输入金额,我想在errorcontainer中输入1条消息:“金额字段是必填项” 如果在那旁边,他在金额字段中输入“char或者非数字的东西”,我想要一个额外的错误消息说“金额字段应该只是数字”'

说话的另一种方式是:
如果消息已经显示,请不要显示,
如果不是,请显示它。

为了帮助向用户显示哪些字段无效,我只使用高亮显示,取消高亮设置,在相关字段中添加一个类,为其提供红色边框。这就像一个魅力。

我尝试过使用showErrors,invalidHandler,errorPlacement,但是我无法使用它。差远了。没有数组/对象包含整个表单的当前无效formelements。但是,errorMap和errorList包含CURRENT验证阶段的错误。意思是一半的时间它只包含由于焦点/模糊效果导致的一个场的误差。是的我知道禁用所有选项,因此只有在表单尝试提交时才会触发验证,这意味着errorMap / errorList将始终包含整个表单的所有错误。但这并不是imo / myBoss的观点。我尝试在验证器属性中挖掘验证器属性,寻找可以提供帮助的东西,但我似乎无法找到任何东西..

我希望我能够解释一些事情,以便有人帮助我,因为我已经在这一段时间里打破了一段时间。

欢迎任何帮助/建议/想法:)

1 个答案:

答案 0 :(得分:3)

请参阅http://docs.jquery.com/Plugins/Validation/validate#options,特别是groups选项。

  

指定错误消息的分组。一个   group由一个任意组组成   name作为键和空格分隔   元素名称列表作为值。   使用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选项指的是:

  

自定义已创建错误的展示位置   标签。第一个论点:创建   错误标签作为jQuery对象。第二   参数:无效元素为   jQuery对象。

same manual page上定义。