即使正在检查其中一个收音机,表单仍然返回 false

Posted

技术标签:

【中文标题】即使正在检查其中一个收音机,表单仍然返回 false【英文标题】:form still returns false even when one of radios is being checked 【发布时间】:2017-02-15 22:52:20 【问题描述】:

为什么当检查其中一个性别收音机时,表单仍然返回 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;
    

【问题讨论】:

你能说明输出是什么吗? 链接到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 或未选择 malefalse 在逻辑上是错误的,因为始终存在 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 &amp;&amp; !$('.radio_female').checked)

JSFiddle:https://jsfiddle.net/Lz44tk7d/2/

【讨论】:

这也很有帮助。非常感谢!【参考方案3】:

要使用 jQuery 检查单选框或复选框是否被选中,它是:

$('.radio_male').is(':checked')

【讨论】:

谢谢。但我更喜欢香草JS【参考方案4】:

如果选中其中一个,则您可以反转您检查的代码,然后返回 true,否则返回 false,或者您可以尝试使用 && 而不是 or 来检查单选按钮是否被选中。

【讨论】:

以上是关于即使正在检查其中一个收音机,表单仍然返回 false的主要内容,如果未能解决你的问题,请参考以下文章

动态检查单选按钮,基于“值”属性,不检查

是否检查收音机是否检查

邮件表单提交,即使验证失败

检查无线电时删除类

即使值存在,也无法单独从 Redis 加载值

Ajax页面刷新错误