我正在尝试使用多个单选按钮创建一个表单。我正在使用for循环生成单选按钮,如下所示:
<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 :(得分: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;
}
}