即使正在检查其中一个收音机,表单仍然返回 false
Posted
技术标签:
【中文标题】即使正在检查其中一个收音机,表单仍然返回 false【英文标题】:form still returns false even when one of radios is being checked 【发布时间】:2017-02-15 22:52:20 【问题描述】:为什么当检查其中一个性别收音机时,表单仍然返回 false?
<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>
var $ = document.querySelector.bind(document);
$('form').onsubmit = function()
if(!$('.radio_male').checked || !$('.radio_female').checked)
return false;
else
return true;
【问题讨论】:
你能说明输出是什么吗? 链接到jsFiddle @JTrixx16 Here 是我制作的样本。如果要判断复选框是真还是假 【参考方案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
。
【讨论】:
我没想到。非常感谢!【参考方案2】:您可能希望自己大声朗读您的代码。你在问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/
【讨论】:
这也很有帮助。非常感谢!【参考方案3】:要使用 jQuery 检查单选框或复选框是否被选中,它是:
$('.radio_male').is(':checked')
【讨论】:
谢谢。但我更喜欢香草JS【参考方案4】:如果选中其中一个,则您可以反转您检查的代码,然后返回 true,否则返回 false,或者您可以尝试使用 && 而不是 or 来检查单选按钮是否被选中。
【讨论】:
以上是关于即使正在检查其中一个收音机,表单仍然返回 false的主要内容,如果未能解决你的问题,请参考以下文章