2016-10-07 35 views
1

为什么当一个性别收音机被检查时,窗体仍然返回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

你能说出是什么输出? –

+0

链接到[jsFiddle](https://jsfiddle.net/errhunter/Lz44tk7d/) –

+0

@ JTrixx16 [这里](https://jsfiddle.net/q97o8bh7/3/)是我制作的示例。如果你想确定复选框是真是假 –

回答

0

要检查无线电或复选框使用jQuery检查,它是:

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

谢谢。但我更喜欢香草JS – JTrixx16

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

+0

我没有想到这一点。非常感谢! – JTrixx16

0

你可以只扭转你的代码,你如果其中一人被选中,然后返回true和else返回false或者你可以尝试使用& &,而不是,或如果单选按钮,检查检查检查。

1

您可能想大声朗读自己的代码。您在询问if male isn't checked OR female isn't checked

由于单选按钮只允许选择一个选项,所以此情况将始终运行。

你最简单的解决方案是从或更改和

if(!$('.radio_male').checked && !$('.radio_female').checked)

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

+0

这也有帮助。非常感谢! – JTrixx16

相关问题