gpt4 book ai didi

javascript - 尝试使用 jQuery 的 submitHandler 时表单未提交

转载 作者:行者123 更新时间:2023-11-30 16:19:21 25 4
gpt4 key购买 nike

我正在将联系表单转换为 AJAX,以便执行成功功能。现在代码在 submitHandler 部分停止,说它是未定义的。我的 submitHandler 怎么没有定义?

submitHandler(函数(表单) {

不过,我这样做的方式是否正确?我想使用我当前的 php,因为我将其构建为在 jQuery 验证之上的后端验证。

有没有人看到 submitHandler 有什么问题以及任何可能阻止发送的问题?

HTML

<div class="contact-container">
<form id="contactform" method="post" action="" novalidate>
<?php
if($sent === true) {
echo "<h2 class='success'>Thanks, your message has been sent successfully</h2>";
} elseif($hasError === true) {
echo '<ul class="errorlist">';
foreach($errorArray as $key => $val) {
echo "<li>" . ucfirst($key) . " field error - $val</li>";
}
echo '</ul>';
}
?>
<div>
<input type="text" class="contact_input" name="name" id="name" value="<?php echo (isset($name) ? $name : ""); ?>" placeholder="Name">
</div>
<div>
<input type="email" class="contact_input" name="email" id="email" value="<?php echo (isset($email) ? $email : ""); ?>" placeholder="Email">
</div>
<div>
<textarea name="message" class="contact_input" id="message" placeholder="Message"><?php echo (isset($message) ? $message : ""); ?></textarea>
</div>
<input type="submit" id="submit_contact" class="clear" name="submitform" value="Send">
</form>
</div>
<div class="contact-email-success">
<div class="contact-email-success-container">
<div id="contact-email-success-title">THANK YOU FOR CONTACTING OUR AGENCY!</div>
<div id="contact-email-success-description">Your submission has been received and one of our team members will contact you shortly.</div>
</div>
</div>

jQuery

//Send the project email
$(document).ready(function(){
$("#submit_contact").on("click", function (event) {
//event.preventDefault();

$("#contactform").validate({
rules: {
name: {
required: true,
minlength: 2
},
email: {
required: true,
email: true
},
message: {
required: true,
minlength: 5
}
},
messages: {
name: {
required: "Please enter your name",
minlength: "Your name seems a bit short, doesn't it?"
},
email: {
required: "Please enter your email address",
email: "Please enter a valid email address"
},
message: {
required: "Please enter your message",
minlength: "Your message seems a bit short. Please enter at least 5 characters"
}
}
});

submitHandler(function(form) {

//Variables for the form ids
var name = $("#name").val();
var email = $("#email").val();
var message = $("#message").val();


$.ajax({
url: "email-contact.php",
type: "POST",
data: {
"project_name": name,
"title_roll": email,
"project_email": message
},
success: function (data) {
//console.log(data); // data object will return the response when status code is 200
if (data == "Error!") {
alert("Unable to send email!");
alert(data);
} else {
$(".contact-container").addClass("removeClass");
$(".contact-email-success").show();
$(".announcement_success").fadeIn();
$(".announcement_success").show();
// $('.announcement_success').html('Email Successfully sent!');
//$('.announcement_success').delay(5000).fadeOut(400);
}
},
error: function (xhr, textStatus, errorThrown) {
alert(textStatus + "|" + errorThrown);
//console.log("error"); //otherwise error if status code is other than 200.
}
});
});
});
});

PHP

$hasError = false;
$sent = false;

$name = $_POST['name'];
$email = $_POST['email'];
$message = $_POST['message'];

if(isset($_POST['submitform'])) {
$name = trim(htmlspecialchars($_POST['name'], ENT_QUOTES));
$email = trim(htmlspecialchars($_POST['email']));
$message = trim(htmlspecialchars($_POST['message'], ENT_QUOTES));

$fieldsArray = array(
'name' => $name,
'email' => $email,
'message' => $message
);

$errorArray = array();

foreach($fieldsArray as $key => $val) {
switch ($key) {
case 'name':
case 'message':
if(empty($val)) {
$hasError = true;
$errorArray[$key] = ucfirst($key) . " field was left empty.";
}
break;
case 'email':
if(!filter_var($email, FILTER_VALIDATE_EMAIL)) {
$hasError = true;
$errorArray[$key] = "Invalid Email Address entered";
} else {
$email = filter_var($email, FILTER_SANITIZE_EMAIL);
}
break;
}
}

if($hasError !== true) {
$to = "gsdfa";
$subject = "Contact Form Submitted";
$msgcontents = "Name: $name<br>Email: $email<br>Message: $message";
$headers = "MIME-Version: 1.0 \r\n";
$headers .= "Content-type: text/html; charset=iso-8859-1 \r\n";
$headers .= "From: $name <$email> \r\n";
$emailsent = mail($to, $subject, $msgcontents,$headers);
if($mailsent) {
$sent = true;
unset($name);
unset($email);
unset($message);
}
}
}

最佳答案

您需要在 validate() 函数调用中定义 submitHandler。但你只是想在外面执行它。这样做 -

$("#contactform").validate({
rules: {...},
messages: {...},
submitHandler: function(form) {
//Variables for the form ids
var name = $("#name").val();
var email = $("#email").val();
var message = $("#message").val();


$.ajax({
url: "email-contact.php",
type: "POST",
data: {
"project_name": name,
"title_roll": email,
"project_email": message
},
success: function (data) {
//console.log(data); // data object will return the response when status code is 200
if (data == "Error!") {
alert("Unable to send email!");
alert(data);
} else {
$(".contact-container").addClass("removeClass");
$(".contact-email-success").show();
$(".announcement_success").fadeIn();
$(".announcement_success").show();
// $('.announcement_success').html('Email Successfully sent!');
//$('.announcement_success').delay(5000).fadeOut(400);
}
},
error: function (xhr, textStatus, errorThrown) {
alert(textStatus + "|" + errorThrown);
//console.log("error"); //otherwise error if status code is other than 200.
}
});
}
});

请参阅 submitHandler 中的示例文档。

关于javascript - 尝试使用 jQuery 的 submitHandler 时表单未提交,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34972869/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com