0

現在、ユーザーがメーリング リストに登録できるように、この小さな AJAX ニュース レターのサインアップ フォームに取り組んでいます。これはほとんどすべてのブラウザーで機能しますが、IE7 以下では機能しません。ソースコードに何か問題があるのか​​ 、それとも同じ機能を純粋なJavaScriptで実行する別の方法があるのか​​ 疑問に思っていましたか?

以下は私のjavascriptです:

$(document).ready(function(){
/* Form Appear Effect */
$('#exists').hide();
$("#formParts").hide();
$("#thanks").hide();
$("#wait").hide();

$('#exists').css({"visibility":"hidden"});


$('#email').click(function() {
    $('#formParts').slideDown();
});

/* AJAX Form Submission */
$('#submitButton').click(function () {
    //Reset Form
    $('.blogSignUp').css('border', '1px solid #E6E6E6');
    $('.blogSignUp').attr('enabled','true');

    // Extract Variable
    var firstName = $('#firstName').val();
    var lastName = $('#lastName').val();
    var email = $('#email').val();

    // Check for Blank Bields
    if (firstName == "" || lastName == "" || email == "") {
        if (email == "")
            $('#email').css('border', '1px solid #E42217');
        if (firstName == "")
            $('#firstName').css('border', '1px solid #E42217');
        if (lastName == "")
            $('#lastName').css('border', '1px solid #E42217');
        return false;
    } else {

        // Check Email
        if (echeck(email) == false) {
            $('#email').css('border', '1px solid #E42217');
            return false;
        } else {
            // Disable and Hide Forms for now...
            $('#formParts').slideUp ();
            $('#form').slideUp();
            $('#exists').fadeOut();

            // Show processing message...
            $("#wait").fadeIn();    

            var data = $('#signup').serialize();

            // Show processing message...
            $("#wait").fadeIn();

            $.ajax({
                type: 'POST',
                url: '../signup.php',
                data: {
                    action: 'signupFunction',
                    firstName: firstName,
                    lastName: lastName,
                    email: email,
                },
                error: function(MLHttpRequest, textStatus, errorThrown) {
                    alert(errorThrown);
                },
                success: function(result, status) {
                    //alert(result);
                    if (result == "Good") {
                        $("#exists").fadeOut();
                        $("#wait").fadeOut();
                        $("#thanks").fadeIn();
                    }
                    if (result == "Exists") {
                        $('.blogSignUp').css('border', '1px solid #E6E6E6');                    
                        $('#email').css('border', '1px solid #E42217');
                        $("#wait").fadeOut();
                        $("#exists").fadeIn();
                        $('#formParts').slideDown();
                        $('#form').slideDown();
                        return false;
                    }
                }
            });
        }
    }      
}); }); function echeck(str) {

    var at="@"
    var dot="."
    var lat=str.indexOf(at)
    var lstr=str.length
    var ldot=str.indexOf(dot)
    if (str.indexOf(at)==-1){
       return false
    }

    if (str.indexOf(at)==-1 || str.indexOf(at)==0 || str.indexOf(at)==lstr){
       return false
    }

    if (str.indexOf(dot)==-1 || str.indexOf(dot)==0 || str.indexOf(dot)==lstr){
        return false
    }

     if (str.indexOf(at,(lat+1))!=-1){
        return false
     }

     if (str.substring(lat-1,lat)==dot || str.substring(lat+1,lat+2)==dot){
        return false
     }

     if (str.indexOf(dot,(lat+2))==-1){
        return false
     }

     if (str.indexOf(" ")!=-1){
        return false
     }

     return true                    }

よろしくお願いします。

4

3 に答える 3

1
data: {
                action: 'signupFunction',
                firstName: firstName,
                lastName: lastName,
                email: email,
            }

する必要があります

data: {
                action: 'signupFunction',
                firstName: firstName,
                lastName: lastName,
                email: email
            },

コンマが配列の最後の変数に挿入されると IE は壊れますが、Firefox はそうではありません。

于 2012-08-22T13:54:19.570 に答える
0

ねえ、唯一の問題は

Problem at line 62 character 33: Extra comma.
email: email,

また、JSLINT を使用してコードのエラーをチェックしてみてください。IE は、これらの間違いに非常に特有です。

于 2012-08-20T19:52:01.987 に答える
0

コードにエラーがないと仮定すると、ハードコーディングされた IE7 の回避策をいつでも実行できます。

JQuery ブラウザーの検出

ユーザーjQueryを使用して、ユーザーが使用しているブラウザーを検出し、IE7を使用しているかどうかを示す条件を作成し、_ _ _ _ __などを実行します。現在の問題がhtml/css関連の場合、通常は非常に簡単ですie7 パッチを作成します。

(「なぜ IE7 なのか?」と疑問に思っている場合は、時間を節約してやめてください。ブラウザーは、特に jQuery で開発者に問題を引き起こすことで有名です。おそらく、それはあなたのせいではなく、ブラウザーのせいです。)

于 2012-08-20T19:39:52.097 に答える