0

そこで、ユーザーが続行する前に3つの無線オプションのいずれかを選択する必要があるように登録フォームを作成しました。ただし、ユーザーがオプションを選択せず​​に[送信]をクリックした場合は、少なくとも「オプションを選択してください」などのメッセージを表示したいと思います。これまでの私のコードは次のとおりです。

<?php
$reg_type = "";
function setclick()
{
    if(isset($_POST["Submit"]))
        $clicked=1;
    else 
        $clicked=0;
}
if ($_SERVER["REQUEST_METHOD"] == "POST") {
    if (empty($_POST["Reg_type"])) {
        $clicked=1;
        header('Location: Registration_1.php');
    }
    else {
        $reg_type = $_POST["Reg_type"];
        header('Location: Registration_2.php');
    }
}
echo $clicked;
?>

<form name="frmtype" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>" method="POST" >
<input type="radio" name="Reg_type" value="1"/> Registering myself with credit card or bank account <br/>
<input type="radio" name="Reg_type" value="2"/> Registering multiple people using credit card or bank account <br/>
<input type="radio" name="Reg_type" value="3"/> Registering multiple people using a purchase order <br/>
<input type="submit" name="Submit" value="Submit" />
<?php 
setclick();
if($clicked)
    echo "Please select an option";
?>

オプションを選択せず​​に[送信]をクリックした場合、エラーメッセージを表示するロジックを停止するのに非常に苦労しています。

4

3 に答える 3

1

フォームが投稿されている場合、setclick()関数は常にtrueに設定されます。$clicked次に、メインのphpブロックの後で呼び出すのでsetclick()、残りのロジックがそれを変更したかどうかは真になります。これを試して:

 if(isset($_POST['Reg_type']) && $_POST['Reg_type'] != ''){ 
    $reg_type = $_POST['Reg_type'];
    header('Location: Registration_2.php');
 } else $clicked = true;

次に、フォームの下のページの下部にあります。

 if($clicked) echo "Please select an option";
于 2012-09-09T03:53:15.940 に答える
0

これを試して

<script>
    function checkform(){

    var checked = false;
    var buttons = document.getElementsByTagName('input')
    for (var i = 0; i < buttons.length ; i++) {
       if (buttons[i].checked) {
           checked = true;
           break;
       }
   }
   return checked;

   }
</script>

<form onsubmit="return checkform()">
<input type="radio" name="Reg_type" value="1"/> Registering myself with credit card or bank account <br/>
<input type="radio" name="Reg_type" value="2"/> Registering multiple people using credit card or bank account <br/>
<input type="radio" name="Reg_type" value="3"/> Registering multiple people using a purchase order <br/>
<input type="submit" name="Submit" value="Submit" />

フィドルを確認してください

これで始められるはずです。このスクリプトはタグ名で要素を選択していることに注意してください。つまり、フォームへの入力をすべて取得します。jQueryの使用に問題がない場合は、jQueryを強くお勧めします。これにより、この種のタスクは簡単になります。

于 2012-09-09T03:46:42.747 に答える
0
<?php
 $reg_type = $_POST['Reg_type'];

 if($reg_type == "1"){
       //action 1
 } else if($reg_type == "2"){
      //action 2 
 } else if($reg_type == "3") {
     //action 3 
 } else {
    // no radio button is checked. display the message

    $message = "Please select an option";
 }

?>
于 2012-09-09T03:50:48.313 に答える