2013-03-01 4 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

+0

Во-первых, вам нужно будет показать код jQuery. Во-вторых, как вы можете ожидать, что он будет функционировать должным образом, если все имена будут точно такими же? Так плагин отслеживает поля. Или есть уникальный индекс внутри скобок каждого имени? 'name =" code [2] "' – Sparky

ответ

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, этот плагин не будет работать. Вы не можете разумно ожидать, что какая-либо проверка JavaScript будет работать, если вы не можете настроить таргетинг на конкретный input однозначно. Broken: http://jsfiddle.net/4ZV9D/

+0

Спасибо за ответ. Я понимаю, что вы имеете в виду, но больше надеялся на способ нацелиться на несколько классов с тем же именем. Я нашел способ сделать это, то есть путем цикла через классы после того, как была инициирована проверка, которая работает нормально. Спасибо, хотя, убираю много для меня – JamesG

Смежные вопросы