0

我有这个 PHP 代码:

 <form action="modificaPriorita.php" method="post">
   <table>
     <tr id="format-tabelle">
        <th></th>
        <th><span class="format-celle">TITLE</span></th>
        <th><span class="format-celle">TYPE</span></th>
        </tr>
        <?php    
          $res = GestioneSegnalazione::showSegnalazioni();
          function drawTable($res) {
            $title = $res[0];
            $idAuthor = $res[1];
            $type = $res[2];

            for ($i = 0; $i < $num; $i++) {
               print "<tr class='row'>
               <td align='center' valign='middle'> <input type='radio' name='radio' value='$title[$i],$idAuthor[$i]'/> </td>
               <td align='center' valign='middle'><span class='format-celle'> $title[$i]</span></td>
               <td align='center' valign='middle'><span class='format-celle'> $type[$i]</span></td>
      ?>
     </table>
     <br>
     <input type="submit" name="show" value="Show" class='freshbutton-orange'  id='show-submit-segnalazione'/>
       <?
         if (isset($_POST['show'])) {
           if ($_POST[radio] == "") {
echo("<SCRIPT JavaScript'>window.alert('Select one segnalazione to show');window.location.href='showSegnalazione.php#close'</SCRIPT>");
           }
         }
 ?>

如果我在单选按钮中选择一个项目并按下按钮“显示”它可以工作,它会转到另一个页面“modificaPriorita.php”并带有两个参数:标题,idAuthor 我的问题是如果我按下“显示”按钮而不选择单选按钮中的一项,它会向我显示错误“选择一个要显示的 segnalazione”,但它会转到没有参数的新页面(“modificaPriorita.php”)。我该怎么做才能收到此错误消息?

4

1 回答 1

1

您无需等待表单发布即可检查他们是否选择了单选按钮。您可以像这样将 javascript 与onsubmit侦听器一起使用:

<form action="modificaPriorita.php" method="post" onsubmit="return validateForm();">
    <table>
        <tr id="format-tabelle">
            <th></th>
            <th><span class="format-celle">TITLE</span></th>
            <th><span class="format-celle">TYPE</span></th>
        </tr>

<?php    
    $res = GestioneSegnalazione::showSegnalazioni();
    function drawTable($res) {
        $title = $res[0];
        $idAuthor = $res[1];
        $type = $res[2];

        for ($i = 0; $i < $num; $i++) {
            print "<tr class='row'>
                <td align='center' valign='middle'> <input type='radio' name='radio' value='$title[$i],$idAuthor[$i]'/> </td>
                <td align='center' valign='middle'><span class='format-celle'> $title[$i]</span></td>
                <td align='center' valign='middle'><span class='format-celle'> $type[$i]</span></td>
             </tr>";
       }
   }
?>
    </table>

    <br>

    <input type="submit" name="show" value="Show" class='freshbutton-orange'  id='show-submit-segnalazione'/>
</form>

<script>
    function validateForm() {
        var radios = document.getElementsByName('radio');

        var checked = false;

        for (var i = 0, length = radios.length; i < length; i++) {
            if (radios[i].checked) {
                checked = true;
                break;
            }
        }

        if (checked) {
            return true;            
        } else {
            alert('Select one segnalazione to show');
            return false;
        }
    }
</script>

所以这段代码中发生的事情就在表单被提交运行validateForm()我们设置的函数之前。在该函数中,它检查是否选择了单选按钮。如果是,则该函数返回 true 以允许表单发布。如果它没有找到选择的单选按钮,它会打开警报窗口,然后返回 false 以阻止表单发布。我希望这有帮助。

于 2013-06-10T13:19:44.283 回答