Здравствуйте.
Есть форма, состоящая из ряда одинаковых блоков
<div class="progblock">
<div class="strelka"><a href=""><img src="/template/img/ico/strelka.png" class="img-responsive"></a></div>
<label class="bold_name"><input type="checkbox" name="public"
class="public osnova" value="Программа 1"> Программа 1</label>
<div class="napravlenie hides" style="display:none;">
<div class="checkbox col-xs-6 forma_obuchen">
<select name="ot_forma1" class="form-control">
<option value="">Форма обучения</option>
<option value="Очно-заочная">Очно-заочная</option>
<option value="Дистанционная">Дистанционная</option>
</select>
</div>
<div class="checkbox col-xs-6 kolvo_uchenik">
<input type="number" name="ot_kolvo1" value=""
class="form-control" placeholder="Число слушателей">
</div>
</div>
<div class="clearfix"></div>
</div>
Есть скрипт, отвечающий за сбор данных с формы и передачу их на следующий шаг, а также за валидацию формы. У нас при выборе каких-либо чекбоксов происходит разворачивание скрытого блока под чекбоксом и там уже пользователь выбирает форму обучения и количество слушателей. Вот без выбранных этих двух полей дальнейший шаг - открытие модального окна выполняться не должен.
$(document).ready(function() {
$('a.podtv').click(function(e) {
e.preventDefault();
var arr= [].map.call($('input:checkbox:checked'),function(el) {
var parent = $(el).parents('.progblock');
return {'name' : el.value, 'type' : $('select',parent).val(), 'val' : $('[type="number"]',parent).val()}});
var mass = JSON.stringify(arr, null, 4);
// Блок валидации
var es = $('input:checkbox:checked')
var parents = $(es).parents('.progblock');
var selprogblock = $('select',parents).val();
var numprogblock = $('[type="number"]',parents).val();
// Проверяем выбрана ли форма обучения
if (selprogblock == '') {
alert('Выберите форму обучения!');
}
// Проверяем выбрано ли количество слушателей
else if (numprogblock == '') {
alert('Введите количество слушателей!');
}
else {
for (var i = 0; i < arr.length; i++) {
$(".info_users_prog").append('<p>' + arr[i].name + '</p><ul><li>' + arr[i].type + '</li><li>' + arr[i].val + '</li></ul>');
$(".parameter").append('<input type="hidden" name="names[]" value="' + arr[i].name + '">');
$(".parameter").append('<input type="hidden" name="types[]" value="' + arr[i].type + '">');
$(".parameter").append('<input type="hidden" name="vals[]" value="' + arr[i].val + '">');
$("#myModal").show("slow");
}
}
});
$('button.close').click(function(e) {
$("#myModal").hide("slow");
arr = [];
$('.info_users_prog').empty();
});
$('button.closer').click(function(e) {
$("#myModal").hide("slow");
arr = [];
$('.info_users_prog').empty();
$('.parameter').empty();
});
});
Но на практике форма состоит не из одного блока а из многих. И если хотя бы в одном из них данные по форме обучения и количеству слушателей выбраны, то на остальные валидация не реагирует и форма проходит валидацию.
Как сделать чтобы проверялись все поля у выбранных чекбоксов?