我有一个表格,其中一个舞台具有动态数量的字段组,其中的数字基于前一阶段的答案。
我将服务器端字段生成为数组,即
<input id="foo[0]"...
<input id="bar[0]"...
<input id="foo[1]"...
<input id="bar[1]"...
<input id="foo[2]"...
<input id="bar[2]"... etc
无论数量多少,所有字段都是必需的&amp;我还需要验证类型和&amp;在某些情况下的位数。我正在使用jQuery validate plugin进行客户端处理(是的,也支持服务器端的东西)&amp;由于表单需要通过XHTML Strict,因此验证无法内联完成(编辑:请参阅下面的我的附录)。
我的问题是我无法弄清楚如何使用动态数量的字段进行验证。以下是表单其余部分的验证语法通常的样子:
$(document).ready(function() {
// validate stage_form on keyup and submit
var validator = $("#form_id").validate({
// rules for field names
rules: {
name: "required",
address: "required",
age: { required: true, number: true }
},
// inline error messages for fields above
messages: {
name: "Please enter your name",
address: "Please enter your address",
age: { required: "Please enter your age", number: "Please enter a number" }
}
});
});
答案 0 :(得分:13)
实际上它应该工作如果你使用类而不是初始化规则作为validate()选项。
标记:
<input id="foo[0]" class="required"
<input id="bar[0]" class="required number"
<input id="foo[1]" class="required"
<input id="bar[1]" class="required email"
jQuery的:
$(document).ready(function() {
var validator = $("#form_id").validate({
messages: {
name: "Please enter your name",
address: "Please enter your address",
age: {
required: "Please enter your age",
number: "Please enter a number"
}
}
});
});
希望这有效。
思南。
答案 1 :(得分:2)
您是否尝试使用custom class rules来定义xhtml不兼容的规则?
docs中的示例仅使用一个类,但我想您可以组合不同的自定义类来实现所需的验证规则。我没有为自己试过这个。
答案 2 :(得分:0)
没有答案所以我会发布我的“临时”解决方案,即为'required'和'type'设置内联验证规则,将'maxlength'留给服务器端检查,然后显示带有内联标题的自定义消息标签。
这对于这项工作来说可能已经足够了,但我仍然很好奇是否有办法在jQuery中“完全”完成它。
答案 3 :(得分:0)
这是另一种方法。
gnomeAware@devserv:~$ tar tf test.tar
File1.tar.gz
File2.tar.gz
File3.tar.gz
File4.tar.gz
答案 4 :(得分:-2)
我找到了使用“元数据”的方法。
这应该在具有动态名称的模板中使用。所以,我不需要知道这个名字。
使用纯javascript和干净标签的代码仍然无法实现缺点。
<script src="jquery.metadata.js" type="text/javascript"></script>
<input validate="{required: true, email: true, messages: { required: 'i'm required', 'i'm not valid e-mail' }}" name="dynamicRow[ myRandomNumber ]"type="text" class="input_normal" />
$( function() {
// setup stuff
$.metadata.setType("attr", "validate");
});