JavaScriptを使用しないソリューションが必要な場合は、フォーム処理スクリプトがフォームのすべての状態を表示できる必要があります。これらには以下が含まれます:
- 最初の未記入のフォーム
- 最初の提出に対する応答は次のとおりです。
- エラーがマークされた、部分的または誤って入力されたフォームの表示
- ありがとうメッセージ
- お礼のメッセージへの返信
<div>
モーダルポップアップは、他のすべてのhtml(子を除く)の上にz位置に配置され、ビューポート全体をカバーするようにスタイル設定された半透明のコンテナ要素(例)のみです。フォームやその他の好きなものが含まれています。使用されていない場合、そのdisplay
属性はに設定されnone
ます。
したがって、phpフォームハンドラーは次のように機能する可能性があります。
$modalclass='modalhide';
$filteredpost=array();
if(isset($_POST['submit1']){ //user submitted form data
//validate submitted data
$filteredpost = my_cleanup_function($_POST);
if(my_form_is_good($filteredpost){
$modalclass='modalshow';
$filteredpost=array();
}
}
echo <<< EOF
<form method='POST' name='mainform' action='myhandler.php'>
//other form fields
<input type='submit' name='submit1'>
</form>
<div class='$modalclass'>
<form name='thanksmodal' method='POST' action='myhandler.php'>
//content of some sort
<input type='submit' name='thankssubmit'>
</form>
</div>
EOF;
AJAXメソッドは、javascriptが送信ボタンのアクションをインターセプトし、フォーム処理スクリプトに非同期で送信して結果を表示することを除いて、同様です。これを簡単にするために、周りにはたくさんのjavascriptライブラリがあります。jQueryとjQuery-UIは私の2つのお気に入りです。