Php 成功提交时隐藏表单
我有一个表单,当它成功提交并显示一条消息时,我想将其隐藏起来(该消息已在运行)。现在唯一的缺点是表单被滑动切换,即使表单没有正确提交。提交表单时存在一些问题。这很奇怪。有时,如果不是所有字段都已填写,它会提交,有时则不会。我认为php和jquery之间的合作在这里并不完美 感谢帮助give,我成功地将以下代码组合在一起: PHP:Php 成功提交时隐藏表单,php,jquery,forms,validation,slidetoggle,Php,Jquery,Forms,Validation,Slidetoggle,我有一个表单,当它成功提交并显示一条消息时,我想将其隐藏起来(该消息已在运行)。现在唯一的缺点是表单被滑动切换,即使表单没有正确提交。提交表单时存在一些问题。这很奇怪。有时,如果不是所有字段都已填写,它会提交,有时则不会。我认为php和jquery之间的合作在这里并不完美 感谢帮助give,我成功地将以下代码组合在一起: PHP: HTML+javascript元素: <div id="feedback-form"> <script>
HTML+javascript元素:
<div id="feedback-form">
<script>
function submitmyform(){
data=$('#myform').serialize();
$.ajax({
url: "scripts/form-testimonial.php",
type:'POST',
data:data,
async:false,
dataType:'html',
success: function(msg){
$('#response_goes_here').html(msg);
$("#feedback-form").slideToggle(200);
}
});
}
</script>
<form action="" id="myform">
<ul>
<li> <label for="name">Name</label> <input id="namef3" name="name" type="text" placeholder="Name" class="required"/>
</li>
<li> <label for="email">E-mail</label> <input id="emailf3" name="email" type="text" placeholder="E-mail" class="required"/>
</li>
<li> <label for="company">Company</label> <input id="companyf3" name="company" type="text" placeholder="Company (if applicable)" />
</li>
<li> <label for="msg">Message</label> <textarea id="msgf3" name="msg" cols="43" rows="8" placeholder="Your feedback" class="required"></textarea>
</li>
</ul>
<button type="button" class="submit" onClick="submitmyform();">Send your feedback</button>
</form>
</div> <!-- id="feedback-form" -->
<div id="response_goes_here"></div>
函数submitmyform(){
数据=$('#myform')。序列化();
$.ajax({
url:“scripts/form essential.php”,
类型:'POST',
数据:数据,
async:false,
数据类型:'html',
成功:功能(msg){
$('response_goes_here').html(msg);
$(“#反馈表”)。幻灯片切换(200);
}
});
}
- 名字
- 电子邮件
- 公司
- 信息
发送您的反馈
还有一个验证脚本(对不起,我知道它很长):
$(函数(){
var addErrorMessage=函数(字段){
var err=$(document.createElement('p')).addClass('validation-error').text('Required field');
field.addClass('err')。在(err)之后;
},
clearError=函数(){
var t=$(本);
if(t.hasClass('err')){
t、 removeClass('err');
t、 next('p').empty().remove();
}
},
isEmpty=函数(str){
返回修剪()长度<1;
},
isValidEmail=函数(str){
变量regexp=/^([a-zA-Z0-9\.-\+])+\@([a-zA-Z0-9\-])+)+([a-zA-Z0-9]{2,4})+$/;
返回regexp.test(str);
},
fieldsValidate=false;
函数validateForm(e){
log('validate start');
var requiredFields=jQuery(e).find('.required');
var email=jQuery(e).find('input[name=“email”]”);
var emailValue=email.val();
log(emailValue+mail val');
fieldsValidate=true;
//检查必填字段是否为空
必填字段。每个(函数(){
var t=$(本);
if(isEmpty(t.val())){
fieldsValidate=false;
如果(!t.hasClass('err')){
附加错误消息(t);
}
}
});
//检查电子邮件是否有效
log(isValidEmail(emailValue)+“有效吗”);
如果(!isValidEmail(emailValue)){
fieldsValidate=false;
如果(!email.hasClass('err')){
补充信息(电子邮件);
console.log('mail NOT ok');
}
}
console.log(fieldsValidate+“返回前”);
返回字段验证日期;
};
$('input,textarea').blur(clearError);
$(“.submit”)。单击(函数(){return validateForm(this.form)});
我已经做了一个测试,但是它不包含实际的php(我不知道我是否可以在JSFIDLE中使用php)
问题是:使用此页面上的表单:(请向下滚动并单击添加新证明-出现以下问题:
echo "<h6>Message sent successfully. Thank you for your feedback.</h6>";
然后在jquery脚本中:
success: function(msg){
if(msg == 'sent'){
$('#response_goes_here').html('Message sent successfully. Thank you for your feedback.');
$("#feedback-form").slideToggle(200);
} else {
$('#response_goes_here').html('Error. Mail not sent!');
}
}
还有这个
if(!$_POST['msg'] || $_POST['name'] || $_POST['email']){
echo "<h6>Error sending e-mail<h6>";
exit;
}
if(!$\u POST['msg']|$\u POST['name']|$\u POST['email'])){
回显“发送电子邮件时出错”;
出口
}
每次完成姓名或电子邮件时都将返回错误:D.重试
if(empty($_POST['msg']) || empty($_POST['name']) || empty($_POST['email'])){
echo "<h6>Error sending e-mail<h6>";
exit;
}
if(空($_POST['msg'])| |空($_POST['name'])| | |空($_POST['email'])){
回显“发送电子邮件时出错”;
出口
}
有很多错误:
将$(函数(){
替换为(函数($){
不要在单击按钮时调用submitmyform
替换
<button type="button" class="submit" onClick="submitmyform();">Send your feedback</button>
使用以下代码,然后重试:
$(".submit").click(function() {
$("#myform").submit();
});
$("#myform").submit(function() {
if (validateForm(this)) {
console.log('valid');
submitmyform();
} else {
console.log('invalid');
}
return false;
});
更新的PHP代码:
if (empty($_POST['msg']) || empty($_POST['name']) || empty($_POST['email'])) {
echo "<h6>Error sending e-mail<h6>";
exit();
}
$receip = "office@avehire.co.uk";
$subj = "Testimonial";
$bodymsg = "Name: " . $_POST['name'] . "\n"
. "Company: " . $_POST['company'] . "\n"
. "Email: " . $_POST['email'] . "\n"
. "Message: " . $_POST['msg'] . "\n";
$email = $_POST['email'];
if (mail($receip, $subj, $bodymsg, 'From: Contact <' . $email . '>')) {
echo "<h6>Message sent successfully. Thank you for your feedback.</h6>";
} else {
echo "<h6>Error occurred while sending email.</h6>";
}
if(空($_POST['msg'])| |空($_POST['name'])| | |空($_POST['email'])){
回显“发送电子邮件时出错”;
退出();
}
$receip=”office@avehire.co.uk";
$sub=“证明”;
$bodymsg=“Name:”.$\u POST['Name']。“\n”
“公司:”.$\u POST[“公司”]。“\n”
“电子邮件:”.$\u POST['Email']。“\n”
“消息:”.$\u POST['msg']。“\n”;
$email=$_POST['email'];
如果(邮件($receip、$subb、$bodymsg,'From:Contact')){
echo“消息已成功发送。感谢您的反馈。”;
}否则{
echo“发送电子邮件时出错。”;
}
它在这里正确地进行了验证!有什么问题吗?在我将php+jquery添加到html之上之前,它确实正确地进行了验证。验证脚本本身也正确地进行了验证。演示网站显示了这个问题。脚本本身看起来不错。我不知道有什么问题。谢谢。我已经尝试过了,但它实际上并没有滑动到表单a上由于某些原因,lso没有发送它。也没有显示成功发送的消息…调整代码。消息是php脚本返回的消息。您必须检查它。在您的位置,我将创建一个函数,而不是php中的回声,我将重新
<button type="button" class="submit" onClick="submitmyform();">Send your feedback</button>
<button type="button" class="submit">Send your feedback</button>
$(".submit").click(function() { return validateForm(this.form) });
$(".submit").click(function() {
$("#myform").submit();
});
$("#myform").submit(function() {
if (validateForm(this)) {
console.log('valid');
submitmyform();
} else {
console.log('invalid');
}
return false;
});
if (empty($_POST['msg']) || empty($_POST['name']) || empty($_POST['email'])) {
echo "<h6>Error sending e-mail<h6>";
exit();
}
$receip = "office@avehire.co.uk";
$subj = "Testimonial";
$bodymsg = "Name: " . $_POST['name'] . "\n"
. "Company: " . $_POST['company'] . "\n"
. "Email: " . $_POST['email'] . "\n"
. "Message: " . $_POST['msg'] . "\n";
$email = $_POST['email'];
if (mail($receip, $subj, $bodymsg, 'From: Contact <' . $email . '>')) {
echo "<h6>Message sent successfully. Thank you for your feedback.</h6>";
} else {
echo "<h6>Error occurred while sending email.</h6>";
}