jQuery验证插件,按名称分组输入元素

时间:2013-03-01 12:21:49

标签: jquery jquery-validate

我的插件在我的一半表单中正常工作,但我也有多个具有相同名称的表单元素,如下所示:

               <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 ??

由于

1 个答案:

答案 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/