1 つのページに同じフォーム (名前/メール/メッセージ フィールド) の複数のインスタンスがあります。それらはすべて、1 つのクラス (「.contact-form」) と異なる (動的に生成された ID) を共有します。
jQuery Tools Validator を使用してそれらを検証します (これにはまったく問題がないため、関係ありません)。
$(".contact-form").validator();
問題は私の sendmail.php ファイルにあると思います。それが、すべての POST 値を取得して検証する方法です。
//grab the fields
$address = trim($_POST['address']);
$title = trim($_POST['title']);
$message = $_POST['message'];
//check if empty
if(empty($name) || empty($title) || empty($message)) {
$wrong = true;
}
if($wrong) {
http_response_code(400);
} else {
// do stuff
http_response_code(200);
}
今、私が直面している問題は次のとおりです。
- ページの最初のフォームを除いて、他のフォームを送信できません。残りのフォームは (適切に入力されていても)、次のエラーが発生します。
注意: 未定義のインデックス:行3のmysitesaddressのアドレス
- 最初のフォームを送信した後 - 他のフォームは期待どおりに動作しません - すべてのフィールドが空のままであっても、それらは通過します (バリデーターはフロントエンドにエラーを表示しますが、sendmail.php が " 200OK」。
それを修正する方法/最初のフォームだけでなくすべてのフォームをチェックする方法/送信後にPOSTデータをクリアする方法はありますか? PHPでそれを行う簡単な方法があると確信しています。私はその言語に精通していないので(主にフロントエンドの人)、どんな助けも大歓迎です。
ありがとうございました!
(私はしばらく答えを探していましたが、「POST」はトリッキーな名前のようで、Wordpress/blogs/forums 関連のものをほとんど取得しています...)
[アップデート]
各フォームの HTML コードは次のとおりです。
<div class="wrapper">
<form class="contact-form" action="sendmail.php" method="post" novalidate="novalidate">
<input name="title" type="text" required="required" />
<input name="address" type="email" required="required" />
<textarea name="message" required="required" ></textarea>
<input type="Submit" value="Submit" />
</form>
<div class="sucess">
Success message that replaces form ^.
</div>
</div>