【问题标题】:Client-side validation for radio buttons in phpphp中单选按钮的客户端验证
【发布时间】:2013-05-10 10:34:45
【问题描述】:

我正在尝试创建一个包含多个单选按钮的表单。我正在使用 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>

我的问题是,即使所有单选按钮都已勾选,所有必填字段仍会弹出并且表单会提交。我在这里缺少什么吗?请帮忙。我已经坚持了好几天了。

【问题讨论】:

  • 确保每组单选按钮具有相同的名称属性值 name="radioGroupOne" name="radioGroupTwo" 然后它将起作用
  • 他们确实有相同的名字。我已经检查过了,所以我不确定为什么它不起作用。我在我的代码中更改了一些内容,特别是 var j = i 到 var j = 0。这做出了某种改进,但是,如果我已经勾选了大约 3 个无线电,即使仍有无线电要勾选,表单也已经提交。
  • 你能粘贴你的代码生成的标记吗

标签: php javascript


【解决方案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;
    }
}

【讨论】:

  • 你太棒了。谢谢。干杯。
猜你喜欢
  • 2011-01-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-08-01
  • 1970-01-01
相关资源
最近更新 更多