Я делаю проверку формы и хочу проверить количество значений переключателей. По умолчанию значения не выбраны. Для каждого вопроса есть два варианта - да и нет.
Сначала я скрываю "предупреждающее сообщение" и проверяю, когда один из входов изменяется. То, что я хочу, это когда все параметры имеют значение no (значение равно N), тогда появится сообщение об ошибке, иначе оно будет скрыто. Я хочу, чтобы, если какой-либо из параметров затем изменится на yes, сообщение об ошибке скроется. Что происходит здесь, если какое-либо из значений изменено на yes, появляется сообщение об ошибке. Может быть, я слишком усложняю, как это должно работать?
$('.cautionMessage').hide();
$('.weeeDetailsChange input').change(function () {
var ownBrand = $('input[name="ownbrand"]:checked').val();
var resell = $('input[name="resell"]:checked').val();
var ImportBasis = $('input[name="importbasis"]:checked').val();
var distributeEEE = $('input[name="distributeeee"]:checked').val();
var exportEU = $('input[name="exporteu"]:checked').val();
var distanceSelling = $('input[name="distanceselling"]:checked').val();
if ( ownBrand && resell && ImportBasis && distributeEEE && exportEU && distanceSelling === 'Y' ) {
$('.cautionMessage').show();
console.log('Show');
} else {
$('.cautionMessage').hide();
console.log('Hide');
}
});
Ах, я вижу, что происходит - возможно, просто нужен свежий взгляд на это.
То, что вы сейчас делаете, это проверка того, что только distanceSelling является да, тогда как вы должны проверять, что все значения отсутствуют, и запускать ваше шоу/скрыть на основе этого, поскольку вы хотите показать сообщение, если какое-либо из значений "да".
Попробуйте следующее:
$('.cautionMessage').hide();
$('.weeeDetailsChange input').change(function () {
var ownBrand = $('input[name="ownbrand"]:checked').val();
var resell = $('input[name="resell"]:checked').val();
var ImportBasis = $('input[name="importbasis"]:checked').val();
var distributeEEE = $('input[name="distributeeee"]:checked').val();
var exportEU = $('input[name="exporteu"]:checked').val();
var distanceSelling = $('input[name="distanceselling"]:checked').val();
if (ownBrand == 'N' && resell == 'N' && ImportBasis == 'N' && distributeEEE == 'N' && exportEU == 'N' && distanceSelling == 'N' ) {
// all values are 'N'
$('.cautionMessage').show();
console.log('Show');
} else {
// not all values are 'N'
$('.cautionMessage').hide();
console.log('Hide');
}
});
Надеюсь, я правильно понял это. Надеюсь, это поможет!
Несколько изменений, которые я сделал. Я использую свойство checked prop('checked')
вместо val()
потому что он фактически возвращает мне логическое значение, поэтому мне не нужно сравнивать его с y
или что-то еще. Затем я переворачиваю шкуру и показываю, где предупреждение осторожно скрывается, когда все флажки проверяются. Нажмите здесь, чтобы увидеть пример
$('.caution').hide();
$(".weeeDetailsChange").change(function(){
var ownBrand = $('input[name="ownbrand"]:checked').prop('checked')
var resell =$('input[name="resell"]:checked').prop('checked')
var ImportBasis = $('input[name="importbasis"]:checked').prop('checked')
var distributeEEE = $('input[name="distributeeee"]:checked').prop('checked')
var exportEU = $('input[name="exporteu"]:checked').prop('checked')
var distanceSelling = $('input[name="distanceselling"]:checked').prop('checked')
if ( ownBrand && resell && ImportBasis && distributeEEE && exportEU && distanceSelling) {
$('.caution').hide();
console.log('hide');
} else {
$('.caution').show();
console.log('show');
}
});
ImportBasis
сине-зеленоватый в приведенном выше коде, заключается в том, что по соглашению имена, начинающиеся с заглавной буквы, предназначены для функций конструктора ... вы должны изменить его наimportBasis
. Просто в сторону. ВТОРОЙ - вы проверяете толькоdistanceSelling
отношению к"Y"
но ни один из остальных (?)! Если эти элементы DOM существуют вообще, первые 90% вашего оператораif
всегда будутtrue
а весь оператор зависит только отdistanceSelling
.