0

複数のラジオ ボタンを含むフォームを作成しようとしています。次のように 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>

これに関する私の問題は、すべてのラジオボタンがチェックされていても、必要なすべてのフィールドがポップアップしてフォームが送信されることです。私がここに欠けているものはありますか?助けてください。私は何日もこれにこだわっています。

4

1 に答える 1

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;
    }
}
于 2013-05-10T02:21:25.257 に答える