即使正在检查其中一个无线电,表单仍然返回false

时间:2016-10-07 03:11:49

标签: javascript html forms validation radio-button

为什么在检查其中一个性别无线电时,表单仍然返回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;
    }
}

4 个答案:

答案 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;而不是或检查单选按钮是否被检查。