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()
метод для проверки, как приведенный выше код.