JQuery: альтернатива каждому () для условной проверки выбранных значений флажков

1) Флажки имеют пять значений: GRA, RRA, FRA, MRA, CHDA

2) Флажок класса Имя ой. Общее для всех 5.

3) Мы сгенерируем исключение, если значение FRA, MRA, CHDA не выбрано

4) Ниже приведен фрагмент, который я использую для достижения этой цели:

var availability = false;

$(".oops:checked").each(function() {
    if($(this).val() === 'FRA' || $(this).val() === 'MRA' || $(this).val() === 'CHDA') {
        availability = true;
    }
});

if (!availability) {
    errors.push('There is no selected among FRA MRA CHRA');            
}

У нас есть другой лучший подход для обработки этого вместо использования трех или операторов и проверки в каждой () функции?

2 ответа

Решение

Вы можете создать структуру данных массива для всех допустимых значений для флажка и проверить выбранные значения по ним:

var availability = false;
var alloweValues = ['FRA', 'MRA', 'CHDA']; 
$(".oops:checked").each(function() {
    if(alloweValues.includes($(this).val())) {
      availability = true;
    }
});
if (!availability) {
    errors.push('There is no selected among FRA MRA CHRA');            
}

Вы можете дополнительно изменить свой код на:

var availability = false;
var alloweValues = ['FRA', 'MRA', 'CHDA']; 
$(".oops:checked").each(function() {
    availability = alloweValues.includes($(this).val());
});
if (!availability) {
    errors.push('There is no selected among FRA MRA CHRA');            
}

Вы также можете заменить includes() с indexOf() лайк

alloweValues.indexOf($(this).val()) !== -1

Как, includes() не работают в браузере IE.

Создайте массив для хранения каждого проверенного значения следующим образом:

var checkvalues=[];
 $(".oops:checked").each(function(){
        checkvalues.push($(this).val());
    });

после этого вы можете использовать includes() метод для проверки, как приведенный выше код.

Другие вопросы по тегам