jQuery Ajax表单没有在iPhone上提交

时间:2014-01-28 06:13:50

标签: php jquery html iphone ajax

我有一个jQuery Ajax表单,如下所示:

<form method="post" action="contact.php" class="contact-form">
    <div class="contact-empty">
       <input type="text" name="name" id="name" placeholder="Name *" class="txt-name" />
       <input type="text" name="email" id="contact-email" placeholder="Email Address *" class="txt-email" />
       <textarea rows="4" name="message" cols="60" id="message" placeholder="Message *" class="txt-message"></textarea>
       <span class="btn-contact-container">
            <button id="contact-submit" class="btn-contact">Submit</button>
            <img src="images/loading.gif" alt="Loading..." width="62" height="62" id="contact-loading">
       </span>
       <span class="contact-error-field"></span>
   </div>
   <div class="contact-message"></div>
</form>

这是发送它的我的js:

$(document).ready(function () {
    $('#contact-submit').click(function () {
         $('.contact-error-field').hide();
         var nameVal = $('input[name=name]').val();
         var emailReg = /^([a-z0-9_\.-]+)@([\da-z\.-]+)\.([a-z\.]{2,6})$/;
         var emailVal = $('#contact-email').val();
         var messageVal = $('textarea[name=message]').val();

       //validate
       if (nameVal == '' || nameVal == 'Name *') {
           $('.contact-error-field').html('Your name is required.').fadeIn();
                return false;
            }
            if (emailVal == "" || emailVal == "Email Address *") {
               $('.contact-error-field').html('Your email address is required.').fadeIn();
                return false;
            } 
            else if (!emailReg.test(emailVal)) {
                 $('.contact-error-field').html('Invalid email address.').fadeIn();
                return false;
            }
            if (messageVal == '' || messageVal == 'Message *') {
                $('.contact-error-field').html('Please provide a message.').fadeIn();
                return false;
            }

            var data_string = $('.contact-form').serialize();

            $('.btn-contact').hide();
            $('#contact-loading').fadeIn();
            $('.contact-error-field').fadeOut();

            $.ajax({
                type: "POST",
                url: "contact.php",
                data: data_string,

                //success
                success: function (data) {

                    $('.btn-contact-container').hide();
                    $('.contact-message').html('<i class="fa fa-check contact-success"></i>Your message has been sent.').fadeIn();
                },
                error: function (data) {

                    $('.btn-contact-container').hide();
                    $('.contact-message').html('<i class="fa fa-times contact-error"></i>Something went wrong, please try again later.').fadeIn();
                }

            }) //end ajax call

        return false;
    });
});

我有一个订阅表单,它使用相同的代码只有一个电子邮件输入,并在iphone上提交。

然而,联系表单卡在“电子邮件地址无效”中。尝试从iPhone提交即使您输入的电子邮件是正确的。它适用于桌面。

我尝试将按钮更改为type =“submit”输入。没有改变任何事情。

更新:我的正则表达式错了,我将其替换为以下内容并且有效:

var emailReg =  /^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/igm;

1 个答案:

答案 0 :(得分:1)

使用submit()

,而不是使用click()提交表单

只需更改javascript代码的顶部,使其如下所示:

$(document).ready(function () {
    $('form.contact-form').submit(function (e) {
         e.preventDefault(); // <-- prevents normal submit behavior

然后将按钮更改为type=submit

   <button type="submit" id="contact-submit" class="btn-contact">Submit</button>