2

ここから入手できます: http://syllableapp.com/test

基本的に、Safari、Chrome、Opera、Webkit Nightly などでは、フォームは美しく正確に意図したとおりに機能します。ただし、Firefox では、送信時に ... 何もしません。どうしてこれなの?

これが私のJavaScriptです:

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

        var email = $.trim($('.email').val());
        var emailRegEx = /^([\w-\.]+@([\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:me@christianselig.com'>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:me@christianselig.com'>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 以外のすべてのブラウザが動作するというのは、いったい何が起こっているのでしょうか?

4

2 に答える 2

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

それを見ると、イベントが定義されていないことがわかります。したがって、エラー。

したがって、変数 event を関数の引数リストに追加します

$('input[type="submit"]').click(function(event) { //<-- added variable 
于 2013-08-18T18:57:29.027 に答える
3

あなたのscripts.jsファイルに

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

これはあるべきです

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

それ以外の場合、イベントは未定義です

于 2013-08-18T18:56:01.687 に答える