0

私のサイトにフォームがあります。一連の関数は、フォームの各フォームフィールドを検証します#contactForm

次の送信関数があります。すべてのフィールドが有効な場合、ajaxリクエストをに送信しcontact-us.php、成功メッセージを表示します。この関数は機能しますが、これが(特に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ですか?

4

2 に答える 2

1

jQuery Formプラグインを使用して書き直し、コールバックのみを提供できます。

関数の最後に1つだけ残しreturn falseて、残りを削除することができます。

于 2013-01-08T19:21:40.623 に答える
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;
});
于 2013-01-08T19:22:09.100 に答える