PHP経由でフォームデータを電子メールで送信する基本的な連絡フォームを設定しました。これはうまく動作しますが、データが入力されていないときにフォームが送信されるのを防ぐために、検証スクリプトをコードにインテグレートするのに問題があります。Javascript/PHPを使用したHTMLフォーム検証
私のコードは、これまでのところです:
$(document).ready(function() {
$("#form1").validate({
submitHandler: function() {
//submit the form
$.post("<?php echo $_SERVER[PHP_SELF]; ?>", //post
$("#form1").serialize(),
function(data){
//if message is sent
if (data == 'Sent') {
$("#message").fadeIn(); //show confirmation message
}
//
});
return false; //don't let the page refresh on submit.
}
}); //validate the form
});
HTMLフォーム
<div id="contact-form">
<form action="" method="post" enctype="multipart/form-data" name="form1" id="form1">
<input type="text" id="name" name="name"/>
<input type="text" id="email" name="email"/>
<input name="submit" type="submit" title="Submit" class="submit_go" value="Submit"/>
</form>
<div id="message">Thank you for your message</div>
</div>
I:フォームを投稿する
<?php
//validate
if(isset($_POST['submit']))
{
$to="[email protected]";
$name=$_REQUEST['name'];
$email=$_REQUEST['email'];
$subject="Contact Us";
$body="Name: $name \n\n Email Address: $email \n\n";
$sent=mail($to, $subject, $body);
echo 'Sent'; die;
}
//
?>
JS:
PHPはデータをメールで送信します以下の値を統合しようとしましたidationスクリプトですが、フォームが送信されるのを妨げるものではありませんか?
検証スクリプト
function leftValue(e, t, n) {
$(this).text(t.parent()[0].style.left)
}
$(document).ready(function() {
required = ["name", "email"];
email = $("#email");
errornotice = $("#error");
emptyerror = "Required Field";
emailerror = "Required Field";
$("#form1").submit(function() {
for (i = 0; i < required.length; i++) {
var e = $("#" + required[i]);
if (e.val() == "" || e.val() == emptyerror) {
e.addClass("form-error");
e.val(emptyerror);
errornotice.fadeIn(750)
} else {
e.removeClass("form-error")
}
}
if (!/^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA- Z0-9]{2,4})+$/.test(email.val())) {
email.addClass("form-error");
email.val(emailerror)
}
if ($(":input").hasClass("form-error")) {
return false
} else {
errornotice.hide();
return true
}
});
$(":input").focus(function() {
if ($(this).hasClass("form-error")) {
$(this).val("");
$(this).removeClass("form-error")
}
})
});
ありがとう、私のコードのAjaxの部分は、サーバー側の検証を使用していても、通常のフォームの送信を停止していませんが? –
ajaxコール:クライアントからPHPコードを呼び出し、サーバーが検証を行い、オプションでアクションを実行し、コード(succesまたはエラーとエラーメッセージ)を返します。呼び出すjavascriptは、返された値に反応し、オプションでサーバーからのエラーメッセージを表示する必要があります。 – swa66