-3

HTMLフォームのJavaScript検証をいくつか行いましたが、PHP検証も含める必要があるため、ユーザーがテキスト入力に何かを入力するのを忘れたり、ラジオを選択したりした場合に、HTMLフォームのすべての機能のPHP検証を含めました。ボタン。

問題は、ユーザーが[質問の準備]送信ボタンをクリックした場合、必要なときにエコーが表示されず、代わりにフォームが送信されることです。これは発生させたくありません。PHPの検証が正常に行われるまで、フォームを送信したくありません。これを機能させるには、コードで何を変更する必要がありますか?

以下はコードです:

<form action="QandATable.php" method="post" id="sessionForm">
<p><strong>1: Your Assessment ID: </strong><span id="idFont"><?php echo $id; ?></span></p>
<input type='hidden' name='id' value='<?php echo $id; ?>' />
<p><strong>2: Number of Assessments you Require:</strong> <input type="text" id="sessionNo" name="sessionNum" onkeypress="return isNumberKey(event)" maxlength="5" /></p>
<p><strong>3: Duration:</strong> <input type="text" id="durationpicker" name="durationChosen" readonly="readonly" /></p>
<p><strong>4: Date:</strong> <input type="text" id="datepicker" name="dateChosen" readonly="readonly" /></p>
<p><strong>5: Start Time:</strong> <input type="text" id="timepicker" name="timeChosen" readonly="readonly" /><span class="timepicker_button_trigger"><img src="Images/clock.gif" alt="Choose Time" /></span></p>
<p><strong>6: </strong><input class="questionBtn" type="submit" value="Prepare Questions" name="prequestion" onClick="myClickHandler(); return false;"/></p>      <!-- Prepare Questions here-->

</form>

<?php

if (isset($_POST['prequestion'])) {

if(empty($_POST['sessionNum'])) {
   echo "Please Set the Number of Assessments";
} 
elseif(empty($_POST['durationChosen'])) {
  echo "Please Select your Assessment's Duration";
}
elseif(empty($_POST['dateChosen'])) {
  echo "Please Select a Date";
}
elseif(empty($_POST['timeChosen'])) {
  echo "Please Select a Start Time";
}
else {

?>

         <script type="text/javascript">

function myClickHandler(){ 
     if(validation()){ 
                showConfirm(); 
     } 
}

<?php

}

}
?>
4

1 に答える 1

0

PHPはサーバー側のスクリプト言語であるため、フォームを送信する前にフォームでPHP検証を実行する簡単な方法はありません。

何らかの理由でPHP検証を行う必要がある場合にできることは、フィールド値を非同期で(目に見えない方法で)送信することです。JavaScriptを使用して、フォームデータを使用して非表示のiframeでGETを呼び出し、別のphpページからエラーを返すことができます(/hidden/formcheck.php?sessionNum=XX&(...)を呼び出して、falseまたはtrueを返します。 )。

本当にそのようにしたい場合は、jQueryまたはリモートURL呼び出し用の既製の機能がたくさんある同様のライブラリ(jQueryのhttp://api.jquery.com/load/など)を使用する方がはるかに良いでしょう。 )。

于 2012-10-28T00:08:14.750 に答える