我的插件在我的一半表单中正常工作,但我也有多个具有相同名称的表单元素,如下所示:
<tr class="orderItems">
<td><input type="text" name="code[]" class="codeRowForm" value="" /></td>
<td>
<select class="selectProductOrders" name="selectProductOrders[]">
<option value="default" disabled selected>Select a product</option>
</select>
</td>
<td><input type="number" pattern="[0-9]*" name="rsp[]" class="rsp" value="" /></td>
<td><input type="number" pattern="[0-9]*" name="trade[]" class="trade" value="" /></td>
<td><input type="number" pattern="[0-9]*" name="discount[]" class="discount" value="0" /></td>
<td><input type="number" pattern="[0-9]*" name="qty[]" class="qty" value="" /></td>
<td><input type="number" pattern="[0-9]*" name="cost[]" class="cost" value="" /></td>
<td class="deleteOrderRow"><a onclick="return false;" href="#"><img class="addRemoveOrderButton" src="img/deleteOrderRow.png" /></a></td>
</tr>
此<tr>
会重复多次,具体取决于用户决定在表单中使用的订单商品数量。因此,如果每行中的名称都相同(例如name=code[]
),我将如何使用插件应用jQuery表单验证:docs.jquery.com/Plugins/Validation/validate ??
由于
答案 0 :(得分:2)
如果每个name
属性都是唯一的,例如code[4]
,code[9]
等,您可以通过在括号中用括号括起来来验证工作。
See documentation: "Fields with complex names (brackets, dots)"
$(document).ready(function () {
$('#myform').validate({ // initialize the plugin
// your other options,
rules: {
'code[1]': {
// rules
},
'code[2]': {
// rules
}
}
});
});
DEMO:http://jsfiddle.net/TKeEc/
您还可以根据name
的第一部分分配规则。将相同的规则分配给code
中包含name
的所有字段,例如code[4]
,code[9]
等
$('[name*="code"]').each(function() {
$(this).rules('add', {
required: true,
// other rules
messages: { // optional custom messages
// custom messages
}
});
});
DEMO:http://jsfiddle.net/TKeEc/1/
否则,如果您有多个字段都包含完全相同的name
属性,则此插件将无法运行。如果您无法唯一地定位特定input
,则无法合理地期望任何JavaScript验证可以正常工作。破碎:http://jsfiddle.net/4ZV9D/