我有一张表格,代表发票的输入表格,行数是动态的,具体取决于用户投放到发票中的产品数量,
每行的输入字段数量始终相同,它们都表示相同的内容,因此具有相同的验证规则。
<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的观点。我尝试在验证器属性中挖掘验证器属性,寻找可以提供帮助的东西,但我似乎无法找到任何东西..
我希望我能够解释一些事情,以便有人帮助我,因为我已经在这一段时间里打破了一段时间。
欢迎任何帮助/建议/想法:)
答案 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上定义。