javascript&&的奇怪行为

时间:2011-11-21 12:25:36

标签: javascript

我使用以下方法验证必须选择一个单选按钮。

function validateForm(){
    var searchType = document.getElementsByName("form1:searchType");
    var a = !(searchType[0].checked);
    var b = !(searchType[1].checked);
    if(a&&b){
        alert('Please select search type');
        return false;
    }
    return true;
}

在上面的方法中,searchType是单选按钮,它创建了两个按钮。如果没有选择两个单选按钮但它显示警告消息,即使选择了第二个单选按钮,它也能正常显示警告消息。有什么好主意吗?

2 个答案:

答案 0 :(得分:0)

您需要使用运算符,而不是 - 使用&&时,只有在两者条件 true - 当其中一个 false 时,整个语句也是 false

<罢工>

所以,只需改为:

if(a || b){
    alert('Please select search type');
    return false;
}

它应该做你想做的事。

编辑:抱歉,我对布尔逻辑感到困惑。

quick test开始,您的代码完全按照原样运行:只有勾选没有复选框时,警报才会显示。

如果可能的话,请解释在jsFiddle中重现的问题和步骤,我们会看到。

答案 1 :(得分:0)

<html>
<head>
<script language="javascript">

function validateForm(){
    var searchType = document.getElementsByName("form1:searchType");
    var a = !(searchType[0].checked);
    var b = !(searchType[1].checked);
    if(a&&b){
        alert('Please select search type');
        return false;
    }
    return true;
}

</script>


</head>

<body>

<form name="form1">

<input type="radio" name="form1:searchType" /> male
<input type="radio" name="form1:searchType" /> female
<input type="submit" name="submit" value="submit" onclick="validateForm()" >

</form>

</body>
</html>

我在这段代码中使用你的功能,它的工作正常,它可以帮助你