#javascript #html #forms #validation #radio-button
#javascript #HTML #формы #проверка #переключатель
Вопрос:
Почему при проверке одного из гендерных радиоприемников форма по-прежнему возвращает false?
HTML
<form action="">
<input class="radio_male" type="radio" name="gender" value="Male"> Male
<br>
<input class="radio_female" type="radio" name="gender" value="Female"> Female
<br>
<input type="submit" value="Submit">
</form>
JavaScript
var $ = document.querySelector.bind(document);
$('form').onsubmit = function() {
if(!$('.radio_male').checked || !$('.radio_female').checked) {
return false;
} else {
return true;
}
}
Комментарии:
1. Можете ли вы указать, каким будет результат ?.
2. Ссылка на jsFiddle
3. @JTrixx16 Вот образец, который я сделал. Если вы хотите определить, установлен ли флажок true или false
Ответ №1:
Вы хотите проверить, выбран ли какой-либо из вариантов, поэтому выполните следующие действия,
var $ = document.querySelector.bind(document);
$('form').onsubmit = function() {
if($('.radio_male').checked || $('.radio_female').checked) {
return true;
} else {
return false;
}
}
Ссылка на jsFiddle
Объяснение
В соответствии с вашим следующим условием,
if(!$('.radio_male').checked || !$('.radio_female').checked) {
Вы проверяете, что если Female
не выбрано или male
не выбрано, то false
это логически неверно, поскольку всегда будет либо female
не выбрано (когда male
выбрано), либо male
не выбрано (когда female
выбрано), либо оба не выбраны (состояние по умолчанию), так что это условие всегда будет давать true
результат.
Итак, в моем предложенном ответе мы сначала проверяем, что либо male
выбрано, либо female
выбрано, а затем true,
еще false
.
Комментарии:
1. Я об этом не думал. Большое спасибо!
Ответ №2:
Возможно, вы захотите прочитать свой код вслух для себя. Вы спрашиваете if male isn't checked OR female isn't checked
Поскольку переключатели позволяют выбирать только один параметр, это условие будет выполняться всегда.
Ваше самое простое решение — перейти от ИЛИ к И
if(!$('.radio_male').checked amp;amp; !$('.radio_female').checked)
JSFiddle: https://jsfiddle.net/Lz44tk7d/2 /
Комментарии:
1. Это также полезно. Большое спасибо!
Ответ №3:
Чтобы проверить, установлен ли флажок radio или checkbox с помощью jQuery, это:
$('.radio_male').is(':checked')
Комментарии:
1. Спасибо. Но я предпочитаю ванильный JS
Ответ №4:
Вы могли бы просто поменять местами свои коды, в которых вы проверили, установлен ли флажок на одном из них, затем вернуть true, а else — false, или вы могли бы попытаться использовать amp;amp; вместо or для проверки, установлен ли переключатель.