即使选中了所有单选按钮,javascript验证也会发出警报

即使选中了所有单选按钮,javascript验证也会发出警报,javascript,Javascript,我尝试过用这段代码在一个有3个单选按钮输入的表单上设置一个验证,以便在没有选中所有按钮时向用户发出警告。。但当我尝试时,即使所有按钮都被选中,它也会给我错误提示。。知道为什么吗 这是我的表格 <form name="form1" action="mark.php" onsubmit="return validateForm()" method="post"> <tr> <th> Your attendance<font

我尝试过用这段代码在一个有3个单选按钮输入的表单上设置一个验证,以便在没有选中所有按钮时向用户发出警告。。但当我尝试时,即使所有按钮都被选中,它也会给我错误提示。。知道为什么吗

这是我的表格

   <form name="form1" action="mark.php" onsubmit="return validateForm()" method="post"> 

     <tr>
        <th> Your attendance<font size="4" > </font></th>
        <td>  <input type="radio" name ="v1" value = "4"    onclick="updateTotal();"/></td>
        <td>  <input type="radio" name ="v1" value = "3"    onclick="updateTotal();" /></td>
        <td>  <input type="radio" name ="v1" value = "2"    onclick="updateTotal();" /></td>
        <td>  <input type="radio" name ="v1" value = "1"    onclick="updateTotal();" /></td>    
        </tr>

        <tr>
        <th > Your grades  <font size="4" > </font></th>
        <td>  <input type="radio" name ="v2" value = "4"    onclick="updateTotal();" /></td>
        <td>  <input type="radio" name ="v2" value = "3"    onclick="updateTotal();" /></td>
        <td>  <input type="radio" name ="v2" value = "2"    onclick="updateTotal();" /></td>
        <td>  <input type="radio" name ="v2" value = "1"    onclick="updateTotal();" /></td>    
        </tr>

        <tr>
        <th >Your self-control <font size="4" > </font></th>
        <td>  <input type="radio" name ="v3" value = "4"    onclick="updateTotal();" /></td>
        <td>  <input type="radio" name ="v3" value = "3"    onclick="updateTotal();" /></td>
        <td>  <input type="radio" name ="v3" value = "2"    onclick="updateTotal();" /></td>
        <td>  <input type="radio" name ="v3" value = "1"    onclick="updateTotal();" /></td>    
        </tr>

您的出席
你的成绩
你的自制力
我已经尝试过这个javascript代码

<script type="text/javascript">
function validateForm(formData){
    if(!this.v1.checked && !this.v2.checked && !this.v3.checked){
        alert('answer all questions please');
        return false;
    }
       return true;
    }
    </script>

函数validateForm(formData){
如果(!this.v1.checked&&!this.v2.checked&&!this.v3.checked){
警惕(“请回答所有问题”);
返回false;
}
返回true;
}
分别给定A、B和C单选按钮,您需要所有情况,但选中所有按钮的情况除外。(其中一个按钮未选中)

换句话说:

!A || !B || !C
翻译成代码后,这是:

if (!(this.v1.checked && this.v2.checked && this.v3.checked)) {


经过一点挖掘,你不能仅仅检查一组无线电中的一个是否被这样检查。您需要单独循环节点(this.v1[i].checked)并检查这些节点。如果您使用的是像jQuery这样的框架,那么就更容易了。

第一个问题是您需要在validateForm()中传递表单:


如果使用jquery,则更容易,因此添加行

<head>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
</head>

所以。。。您可以重构此代码。

请发布您所有的code@Prisoner:事实上,这一点就足够了…还可以看到这个问题:我改成了这个。。同样的问题也出现了:(@JannaSmith:您到底想在什么时候提醒消息,三个消息中的一个没有被检查,还是没有被检查?三个消息中的一个没有被检查
<form name="form1" action="mark.php" onsubmit="return validateForm(this)" method="post"> 
                                                                   ^ pass this
    function groupChecked(group)
    {
        for(var i=0; i<group.length; i++)
        {
            if(group[i].checked)
            {
                return true;
            }
        }
        return false;
    }

function validateForm(formData){
    if(!(groupChecked(formData.v1) && groupChecked(formData.v2) && groupChecked(formData.v3))){
        alert('answer all questions please');
        return false;
    }
   return true;
}
<head>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
</head>
function validate(){
    $("input[name=v1]").each(function(){ 
       if($(this).is(":checked")){
           return false;
        } 
    });

    $("input[name=v2]").each(function(){ 
       if($(this).is(":checked")){
           return false;
        } 
    });

    $("input[name=v3]").each(function(){ 
       if($(this).is(":checked")){
           return false;
        } 
    });

    return true;
}