2013-03-01 32 views
1

我有插件我的窗體的一半正常工作,但我也有多個同名的表單元素,像這樣分組輸入元素:jQuery驗證插件通過名字

   <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

這就是爲什麼插件是屁股疼痛。 – defau1t 2013-03-01 12:27:19

+0

首先,你將不得不展示你的jQuery代碼。其次,如果所有名稱完全相同,你怎麼能期望它正常運行?這就是插件跟蹤字段的方式。或者每個名稱的括號內是否有獨特的索引? 'name =「code [2]」' – Sparky 2013-03-01 16:09:24

回答

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的第一部分分配規則。將相同規則分配給name中包含code的所有字段,例如, 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/

+0

感謝您的回覆。我明白你的意思,但更希望有一種方法可以用同一個名字來定位多個班級。我已經找到了一種方法來做到這一點,這是通過在啓動validate之後循環遍歷類,這很好。不過謝謝,爲我清除了很多東西 – JamesG 2013-03-01 21:24:30