2013-08-18 57 views
2

這是可以在這裏找到:http://syllableapp.com/test爲什麼我的註冊表單在除Firefox以外的每個瀏覽器都能正常工作?

基本上,在Safari瀏覽器,鉻,歌劇,WebKit每日等形式精美的作品,並完全按預期。但在Firefox中,只需提交它就不會執行任何操作。爲什麼是這樣?

這裏是我的JavaScript:

$(document).ready(function() { 
    $('input[type="submit"]').click(function() { 
     event.preventDefault(); 

     var email = $.trim($('.email').val()); 
     var emailRegEx = /^([\w-\.][email protected]([\w-]+\.)+[\w-]{2,4})?$/; 

     if (email == "" || !emailRegEx.test(email)) { 
      $(this).effect("shake", { times:2 }, 75); 
     } 
     else { 
      var data = "email=" + email; 

      $.ajax({ 
       type: "POST", 
       url: "register_email.php", 
       data: data, 
       success: function(data) { 
        if (data == 1) { 
         $('form').hide(); 
         $('form').html("<p class='success'>You'll be notified! Welcome aboard.</p>"); 
         $('form').fadeIn(300); 
        } 
        else { 
         $('form').hide(); 
         $('form').html("<p class='error'>Dang, there was an error. <a href='mailto:[email protected]'>Email me?</a></p>"); 
         $('form').fadeIn(300); 
        } 
       }, 
       error: function(jqXHR, textStatus, errorThrown) { 
        alert("Error: " + errorThrown); 
        $('form').hide(); 
        $('form').html("<p class='error'>Dang, there was an error. <a href='mailto:[email protected]'>Email me?</a></p>"); 
        $('form').fadeIn(300); 
       } 
      }); 
     } 
    }); 
}); 

我的PHP:

<?php 
    $db = new mysqli("localhost", "swuclu_emailer", "etreadmill:(", "swuclu_syllable_emails"); 

    if ($db->connect_error) { 
     echo "0"; 
    } 
    else { 
     $email = $_POST["email"]; 

     $stmt = $db->prepare("INSERT INTO emails (email) VALUES (?)"); 
     $stmt->bind_param("s", $email); 
     $stmt->execute(); 

     echo 1; 
    } 
?> 

究竟是怎麼回事,除Firefox以外每一個瀏覽器將工作?

回答

3

scripts.js文件

$(document).ready(function() { 
    $('input[type="submit"]').click(function() { 
     event.preventDefault(); 

這應該是

$(document).ready(function() { 
    $('input[type="submit"]').click(function(event) { 
     event.preventDefault(); 

否則事件是不確定的

+0

爲什麼它在其他瀏覽器?是否因爲Firefox在被要求訪問未定義對象上的某個函數時選擇死掉,而其他瀏覽器選擇默默忽略它?或者它與範圍和關閉有關,其他瀏覽器能夠找到'event'對象? –

+0

你必須看看瀏覽器的源代碼。處理這個問題的正確方法是暫停腳本(Firefox執行此操作的方式)。 –

5

在控制檯中啓用錯誤時的頁面改變持續。

你會看到這樣的錯誤:

ReferenceError: event is not defined 
http://syllableapp.com/test/scripts/scripts.js 
Line 3 

這需要你的代碼:

$(document).ready(function() { 
$('input[type="submit"]').click(function() { 
    event.preventDefault(); //<--- here 

看,你看是不是定義的事件。因此錯誤。

所以變量事件添加到函數參數列表

$('input[type="submit"]').click(function(event) { //<-- added variable 
+0

何時需要定義事件?總是? –

+2

當你使用它... – epascarello

+1

你不需要添加,除非你使用它。例如,如果你想防止默認動作被觸發,或者從事件中獲得一些信息(按什麼鍵等) –

相關問題