2015-11-26 4 views
3

Как проверить все выбранные входы, когда это динамический массив? Как это:jQuery проверять динамические входы

Я использовал Laravel 4.2 лезвия

<tr><td> {{ Form::select('items[]', $items, null, array('class'=>'form-control items', 'required')) }} </td></tr> 

и это код проверки формы

if ($('.val-form').length > 0) { 
    $('.val-form').validate(); 
} 

тогда я создать кнопку для создания нового выбора входов

$(document).on('click', '.add-item', function (e) { 
     var row = $(this).closest('tr').prev('tr').clone(); 
     row.find('input').val(''); 
     $(this).closest('tr').before(row); 
     e.preventDefault(); 
    }); 

после я нажимаю кнопку добавления, форма только подтверждает входные данные dom и новые добавленные входы не подтверждены

enter image description here

все сгенерированные ВХОДЫ СОЗДАННЫЕ с одноименным названием «элементы []»

и если я забыл поставить какие-либо элементы значения в форме я получил элементы массива на стороне сервера с пустыми значениями

'items' => 
array (size=2) 
    0 => string '42' (length=2) 
    1 => string '' (length=0) // this empty value cause i forget to fill all inputs 
+0

обновить $ ('VAL-форму') проверки(); после добавления ввода –

+0

Я уже пытаюсь обновить $ ('. val-form'). validate(); после добавления ввода, но не решила проблему –

+0

Используете ли вы какой-то плагин проверки? Создайте [скрипку] (https://jsfiddle.net/) сгенерированным HTML и используйте JS. –

ответ

-1

В jquery.validate.js мы можем найти функцию с именем checkForm, мы должны изменить ее, как показано ниже, чтобы исправить. .

checkForm: function() { 
this.prepareForm(); 
for (var i = 0, elements = (this.currentElements = this.elements()); elements[i]; i++) { 
if (this.findByName(elements[i].name).length != undefined && this.findByName(elements[i].name).length > 1) { 
for (var cnt = 0; cnt < this.findByName(elements[i].name).length; cnt++) { 
this.check(this.findByName(elements[i].name)[cnt]); 
} 
} else { 
this.check(elements[i]); 
} 
} 
return this.valid(); 
} 

Это будет проверять массив полей ввода с таким же названием, как "предметы []" я нашел это решение по этому link

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