Arun Karthick K Ответов: 1

Проверка значений внутри цикла


Попытка проверить данные в нескольких формах. Если класс "а" проверен, он должен проверить, является ли класс "в" пустым или нет.
c = 1;
d = 1;
$('.a').each(function(){
    if($(this).is(':checked'))
    {
        $('.b').each(function(){
            if($(this).val() == '')
            {
                err += "<p>Value Empty at row +c+</p>";
                return false;
            }
            d = d + 1;
        });
    }
    c = c + 1;
});

HTML
html += '<label><input type="checkbox" class="a" name="a[]" value="Value" /> Value</label><br>';
html += '<input type="text" class="b" name="b[]" />';


Проблема в том, что он отлично подходит для первой формы. когда дело доходит до второй формы, он проверяет первое значение класса " b "вместо проверки второго значения класса "b"

Что я уже пробовал:

Пробовали использовать различные методы через интернет. не мог найти лучшего решения для решения этой проблемы

1 Ответов

Рейтинг:
0

Richard Deeming

Вам понадобится какой-то способ связать каждый из них b с соответствующим a Родительский элемент сделает свое дело . :

html += '<div>';
html += '<label><input type="checkbox" class="a" name="a[]" value="Value" /> Value</label><br>';
html += '<input type="text" class="b" name="b[]" />';
html += '</div>';

Затем ваш код проверки должен проверить связанный с ним код проверки. b элемент, а не все они:
c = 1;
d = 1;

$('.a').each(function(){
    if (this.checked) {
        if ($(this).closest('div').find('.b').val() == '') {
            err += "<p>Value Empty at row " + c + "</p>";
        }
        
        d++;
    }
    
    c++;
});

NB: То return false; оператор внутри самой внутренней функции не будет иметь никакого эффекта. Вы пытаетесь вернуть значение из функции обратного вызова, но возвращаемое значение игнорируется.