为什么在检查其中一个性别无线电时,表单仍然返回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;
}
}
答案 0 :(得分:2)
您想检查是否选择了任何一个选项,请执行以下操作,
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 :(得分:1)
您可能想要自己大声朗读代码。您问if male isn't checked OR female isn't checked
由于单选按钮只选择一个选项,因此该条件将始终运行。
您最简单的解决方案是从OR更改为AND
if(!$('.radio_male').checked && !$('.radio_female').checked)
JSFiddle:https://jsfiddle.net/Lz44tk7d/2/
答案 2 :(得分:0)
要检查是否使用jQuery检查了radio或checkbox,它是:
$('.radio_male').is(':checked')
答案 3 :(得分:0)
你可以在你检查其中一个被检查的代码然后返回true然后返回false或你可以尝试使用&amp;&amp;而不是或检查单选按钮是否被检查。