jQuery使用动态数量的字段进行validation

我有一个表格,其中一个舞台具有动态数量的字段组,其中数字基于前一阶段的答案。

我将服务器端字段生成为数组,即

<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 

无论数字如何,所有字段都是必需的,在某些情况下我还需要根据类型和位数进行validation。 我正在使用jQuery validate插件进行客户端处理(是的,也支持服务器端的东西)并且validation不能内联,因为表单需要传递XHTML Strict(编辑:请参阅下面的我的附录) 。

我的问题是我无法弄清楚如何使用动态数量的字段进行validation。 以下是表单其余部分的validation语法通常如下所示:

 $(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" } } }); }); 

实际上它应该工作如果你使用类而不是初始化规则作为validate()选项。

标记:

  

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" } } }); }); 

希望这有效。 思南。

您是否尝试使用自定义类规则来定义xhtml不兼容的规则?

文档中的示例仅使用一个类,但我想您可以组合不同的自定义类来实现所需的validation规则。 我没有为自己试过这个。

没有答案所以我将发布我的“临时”解决方案,即为’required’和’type’设置内联validation规则,将’maxlength’留给服务器端检查,然后显示带有内联title标签的自定义消息。

这对于这项工作来说可能已经足够了,但我仍然很好奇是否有办法在jQuery中“完全”完成它。

这是另一种方法。

 /* Normal validate initialisation. */ $('#myForm').validate({ /* Use the submitHandler method to add custom-selector-based validation. */ submitHandler: function(form, ev) { /* Find your dynamic field/s. Note that you may want to access them via a scope external to validate, as any selection you do in this internal scope will be static from the form's pre-edit state. */ var el = $('#selector'); /* Do your custom validation. */ if ( el.val() !== 'A' ) { /* Show any errors:- 'fieldname': 'error message'. */ this.showErrors({ 'name-of-a-field-near-where-you-want-your-error-placed': 'Please enter "A" to continue' }); /* Prevent form submission. */ return; } } }); 

我找到了一种使用“元数据”的方法。

这应该在具有动态名称的模板中使用。 所以,我不需要知道这个名字。

缺点是使用带有干净标签的纯JavaScript的代码仍然是不可能的。

   $( function() { // setup stuff $.metadata.setType("attr", "validate"); });