动态单选按钮组验证


Dynamical radio button group validation

示例javascript:

<script type="text/javascript">
function validateForm() {
    var radiobutton = document.getElementsByName("co[]");
    for (var i = 0; i < radiobutton.length; i++) {
        if (radiobutton[i].checked) {
            return true;
        }
    }
    alert("At least one radio button has not been selected");
    return false;
}

示例php:

<form method="post" action="result.php" onSubmit="return validateForm();">
<?php   
    $_SESSION['two']=$_POST;
    $query1 = mysql_query('SELECT * FROM option WHERE code IN("'.implode('","',$_POST['co']).'")'); 
    while($data1 = mysql_fetch_assoc($query1))
    {               
        echo $data1['name'];                                    
?>          
    <table>
        <tr>
            <td>Detail</td>
            <td>Select</td>
        </tr>
    <?php                       
        $query = mysql_query('SELECT * FROM detailoption WHERE code="'.$data1['code'].'"');
        while($data = mysql_fetch_assoc($query))
        {           
            echo "<tr>";
            echo "<td>".$data['detail']."</td>";
            echo "<td><input type='radio' value='".$data['detail']."' name='co[".$data['code']."]' /></td>";
            echo "</tr>";               
        }                       
    ?>
    </table>
<?php
    }
?>              
<input type="submit" name="submit" value="Submit" />

当我选择单选按钮并提交时,系统会显示一条错误消息
当我没有选择单选按钮并提交时,系统还会显示一条错误消息。

有人能帮我吗?

您的行var radiobutton = document.getElementsByName("co[]");总是返回空数组,因为您没有任何具有该名称的输入。

您应该将code信息存储在输入的value属性中,如果您想在结果中检索detail字段,则应该将detailoption_id存储在value属性中,因为表中的所有行都有相同的代码,但可能没有相同的详细信息。

$query = mysql_query('SELECT * FROM detailoption WHERE code="'.$data1['code'].'"');
        while($data = mysql_fetch_assoc($query))
        {           
            echo "<tr>";
            echo "<td>".$data['detail']."</td>";
            echo "<td><input type='radio' value='".$data['code']."' name='co' /></td>";
            echo "</tr>";               
        } 

然后从新名称中获取输入列表

var radiobutton = document.getElementsByName("co");

首先给表单起个名字,比如myform,然后试试这个。我希望它能被你使用。

function validateForm()    {
len = document.myform.co.length
for (i = 0; i <len; i++)
{
   if (document.myform.co[i].checked) 
   {
     return true;
   }
   alert("At least one radio button has not been selected");
   return false;
}