我的网站上有一个表单。一系列函数验证表单#contactForm
我有以下提交功能,如果所有字段都有效,则向contact-us.php
发送ajax请求,然后显示成功消息。该函数有效,但我想知道这是否是这种编码的理想方式(特别是使用两(2)个return false
语句)。
这是我的代码的一部分:
$('#contactForm').submit(function(e){
if(validateContactFirstName() && validateContactLastName() && validateContactEmail() && validateContactPhone() && validateContactMessage()) {
e.preventDefault();
$('#contactSubmit').button('loading');
$('#contactSubmit').attr('disabled', 'disabled');
$.ajax({
type : 'POST',
url : $(this).attr('action'),
data : $(this).serialize(),
success : function(data) {
$('.hideOnSuccess').hide();
$('div.contactSuccess').html('<div class="hero-unit"><h1><i class="icon-envelope-alt successIcon"></i> Thanks!</h1><p>An email confirming the details of your message has been sent to your email address. We will respond within one business day. </p></div>');
$('html,body').animate({
scrollTop: 0
}, 800);
}
});
return false;
} else {
return false;
}
});
我可以删除哪些return false
条款?或者我应该取出preventDefault
?
答案 0 :(得分:1)
您可以使用jQuery Form plugin重写它,并仅提供回调。
您只能在函数末尾留下一个return false
并删除其他内容。
答案 1 :(得分:1)
我个人更喜欢使用$ .post,这是你正在使用的简写。
http://api.jquery.com/jQuery.post/
另外,请务必防止表单提交的默认设置 - 看起来像这样
$('#contactForm').submit(function(e){
e.preventDefault();
if(validateContactFirstName() && validateContactLastName() && validateContactEmail() && validateContactPhone() && validateContactMessage()) {
$('#contactSubmit').button('loading');
$('#contactSubmit').attr('disabled', 'disabled');
$.ajax({
type : 'POST',
url : $(this).attr('action'),
data : $(this).serialize(),
success : function(data) {
$('.hideOnSuccess').hide();
$('div.contactSuccess').html('<div class="hero-unit"><h1><i class="icon-envelope-alt successIcon"></i> Thanks!</h1><p>An email confirming the details of your message has been sent to your email address. We will respond within one business day. </p></div>');
$('html,body').animate({
scrollTop: 0
}, 800);
}
});
return false;
});