首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >AJAX提交函数优化

AJAX提交函数优化
EN

Stack Overflow用户
提问于 2013-01-09 03:05:22
回答 2查看 73关注 0票数 0

我的网站上有一张表格。一系列函数将验证表单#contactForm上的每个表单域

我有以下提交函数,如果所有字段都有效,它会向contact-us.php发送一个ajax请求,然后显示一条成功消息。该函数可以工作,但我想知道这是否是编码的理想方式(特别是使用两(2)个return false语句)。

下面是我的部分代码:

代码语言:javascript
复制
$('#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拿出来?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-01-09 03:22:09

我个人更喜欢使用$.post,它是你正在使用的东西的一种简写。

http://api.jquery.com/jQuery.post/

此外,一定要防止您的表单提交的默认值-将如下所示

代码语言:javascript
复制
$('#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;
});
票数 1
EN

Stack Overflow用户

发布于 2013-01-09 03:21:41

您可以使用jQuery Form plugin重写它,并且只提供回调。

您可以只在函数的末尾保留一个return false,并删除else。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14222216

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档