0

我正在寻找一种方法来告诉用户,如果他按下提交按钮而不选择任何复选框,他必须至少选择一个复选框。通过使用 php

4

5 回答 5

1
<?php

   if(isset($_POST['submit']))
   {
        $checked=0;
        for($i=0;$i<=2;$i++){//check all the boxes
            if(isset($_POST['checkbox'.$i]))
                $checked=1;
        }
   }

    if ($checked==0){//alert if no boxes are checked
        echo("You must check at least 1");
    }
    else{
        header("location: nextpage.php");
    }

?>
<form name="form1" method="POST" action="">
      <input name="checkbox0" type="checkbox" value="1"> 1
      <input name="checkbox1" type="checkbox" value="2"> 2
      <input name="checkbox2" type="checkbox" value="3"> 3
      <input name="submit" type="submit" value="Submit">
</form>
于 2013-06-27T01:52:45.920 回答
1

您可以使用@jm-verastigue 答案将用户重定向到您想要的页面:

if ($checked == 0){
// display alert
} else {
// redirect user
}
于 2013-06-27T03:45:20.537 回答
0

PHP 在用户看到页面之前发生在服务器上。用户只能看到最终渲染的产品。您可以使用 javascript 来测试您的元素是否在离开页面之前被选中,或者在处理表单的下一页上进行测试。(或者两者都做,因为用户可以关闭 javascript。)

您正在寻找的 JS 的开头onsubmit()可能是document.getElementByID['the id of the input field'].checked

于 2013-06-27T01:43:01.863 回答
0

我会为此使用 Jquery 并这样做......

<form id="test" method="post" action="wherever.php">
<input type="checkbox" id="checkbox1" name="test" value="Checkbox1">Checkbox1
<button id="formsubmit">SUBMIT</button>
</form>

然后在你的 Jquery 中,做

$('#formsubmit').click(function(e){
  e.preventDefault();
    if($("#checkbox1").is(':checked')){
    //on success
    $('form#test').submit();
    } else { 
   //on no checkbox
   alert('you need to check  box');
   }
   });

在这里演示

于 2013-06-27T01:44:26.047 回答
0

如果你想要它在PHP中,你可以这样做:

<?php
if(isset($_POST['SubmitButton'])) //checking if form was submitted
{
    if( isset($_POST['test'] )) //checking if button was checked
    {
    echo "Checkbox was checked!"; 
    }
}
?>

<form action="" method="post">
<input type="checkbox" name="test" value="value">
<input type="submit" name="SubmitButton"/>
</form>

这将检查表单是否已提交,然后检查复选框是否已选中。如果是,那么它只是回显该消息。很简单。

希望这可以帮助。

于 2013-06-27T01:48:31.440 回答