2013-05-10 58 views
0

我试图创建一个带有多个单选按钮的窗体。我生成使用for循环,像这样的单选按钮:在php中的单选按钮的客户端验证

<form name="myForm" method="POST" id="myForm" action="result.php" onsubmit=""> 
<?php for ($i = 1; $i <= $row = mysqli_fetch_array($result); $i++) 
{ ?> 
    <input type="radio" name="opt<?php echo $i; ?>" id="opt<?php echo $i; ?>" value="A"/><br/> 
      <input type="radio" name="opt<?php echo $i; ?>" id="opt<?php echo $i; ?>" value="B"/> <?php } ?> 

我想确保每个单选按钮组,有1个选择的答案。我一直在不断地寻找,我想出了这个代码:

</script><script type="text/javascript"> 
function validate() { 
var x = "<?php echo $j;?>"; 

var formValid = false; 
for (var i = 1; i <= x; i++) 
{ 
    var y = document.getElementsByName("opt"+i);   
    var j = 0; 
    while (!formValid && j < y.length){ 
     if (y[j].checked) { 
      formValid = true; 
      j++; 
      alert("test"); 
     } 
     break; 
    } 
} 

if (!formValid) { alert("all fields required"); 
    return false; 
} 
else 
{ 
    var form = document.getElementById("myForm"); 
    form.submit(); 
}</script> 

我对这个问题即使所有的单选按钮已经被选中,需要各个领域仍然弹出,表单将提交。有什么我在这里失踪?请帮忙。我一直坚持这几天。

+0

确保每个单选按钮组具有相同名称的属性值的名字=“radioGroupOne” NAME =“radioGroupTwo”,那么它会工作 – HaBo 2013-05-10 02:04:45

+0

他们有相同的名称。我已经检查过,所以我不确定它为什么不起作用。我在我的代码中改变了一些东西,特别是var j = i到var j = 0。然而,如果我已经有大约3个收音机打勾,表单已经提交,即使仍然有无线电要打勾。 – user1597438 2013-05-10 02:15:29

+0

你可以粘贴你的代码生成的标记 – HaBo 2013-05-10 02:21:28

回答

1

一旦你找到了一个检查栏,你就不会检查其余的,假设一切正常。

你想单独检查字段,当你看到一个不是有效的时候。

var formValid = true; 
for (var i = 1; i <= x; i++) 
{ 
    var fieldValid = false; 
    var y = document.getElementsByName("opt"+i);   
    var j = 0; 
    while (!fieldValid && j < y.length){ 
     if (y[j].checked) { 
      fieldValid = true; 
      break; 
     } 
     j++; 
    } 

    if (! fieldValid) 
    { 
     formValid = false; 
     break; 
    } 
} 
+0

你真棒。谢谢。干杯。 – user1597438 2013-05-10 02:38:25