0

送信ボタンのあるフォームを使用して、asp.net(この部分はHTMLとjQueryのみです)で記述されたWebサイトがあります。jqueryの各テキストボックスに対して独自の検証を作成しました。それぞれが合格すると、フォームはajaxを介してc#codebehindに送信されます。これは、IE7やIE8を含め、すべてのブラウザで問題なく機能します。問題は、IPad(Safari)でページを見ると、検証が完全にスキップされ、ページ全体が更新されることです。私は、私が信じているios2またはおそらくios3を備えた4年前のipadしか持っていません。どちらの方法でも、これをすべてのブラウザーで機能させたいと思います。

コード:

    <input type="button" id="btnLogin"  class="button" value="Login" style="top: 325px;" onclick="fnSignUp();" />


    function fnSignUp() {
        // Check for Valid EMail
        var rege = /^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$/;
        if (rege.test($('#<%= txtEmail.ClientID %>').val())) { }
        else {
            $('#<%= lblErrorSignUp.ClientID %>').text("Invalid EMail");
            return;
        }

        //Check For Empty First Name
        if ($('#<%= txtFNameSignUp.ClientID %>').val() == "") {
            $('#<%= lblErrorSignUp.ClientID %>').text("Enter First Name");
            $('#<%= lblFNameError.ClientID %>').text(" *");
            return;
        }
        else $('#<%= lblFNameError.ClientID %>').text("");

        //Check For Empty Last Name
        if ($('#<%= txtLNameSignUp.ClientID %>').val() == "") {
            $('#<%= lblErrorSignUp.ClientID %>').text("Enter Last Name");
            $('#<%= lblLNameError.ClientID %>').text(" *");
            return;
        }
        else $('#<%= lblLNameError.ClientID %>').text("");

        //Check For Empty Zip Code      
        if ($('#<%=  txtZipSignUp.ClientID %>').val() == "") {
            $('#<%= lblErrorSignUp.ClientID %>').text("Enter Your ZipCode");
            return;
        }

        // Check For Valid Zip Code
        if (IsValidZipCode == false) {
            $('#<%= lblErrorSignUp.ClientID %>').text("Invalid US ZipCode");
            return;
        }

        //Check If Password is left empty
        if ($('#<%=  txtPass1.ClientID %>').val() == "") {
            $('#<%= lblErrorSignUp.ClientID %>').text("Enter A Password");
            return;
        }

        //Check that both Passwords match
        if ($('#<%=  txtPass1.ClientID %>').val() != $('#<%=  txtPass2.ClientID %>').val()) {
            $('#<%= lblErrorSignUp.ClientID %>').text("Both Passwords Must Match");
            return;
        }
        var email = $('#<%=  txtEmail.ClientID %>').val();
        var fname = $('#<%=  txtFNameSignUp.ClientID %>').val();
        var lname = $('#<%=  txtLNameSignUp.ClientID %>').val();
        var zip = $('#<%=  txtZipSignUp.ClientID %>').val();
        var city = $('#<%=  hidcity.ClientID %>').val();
        var state = $('#<%=  hidstate.ClientID %>').val();
        var lat = $('#<%=  hidLatitude.ClientID %>').val();
        var longi = $('#<%=  hidLongitude.ClientID %>').val();
        var pass = $('#<%=  txtPass1.ClientID %>').val();

        $.ajax({
            type: "POST",
            url: "Login.aspx/SignUpNewUser",
            data: "{'email':'" + email + "', 'fname' : '" + fname + "' ,  'lname' : '" + lname + "', 'zip' : '" + zip + "',  'city' : '" + city + "' ,  'state' : '" + state + "' ,  'lat' : '" + lat + "',  'longi' : '" + longi + "',  'pass' : '" + pass + "' }",
            contentType: "application/json; charset=utf-8",
            dataType: "json",
            success: function (msg) {
                var obj = $.parseJSON(msg.d);
                if (obj.login == "false") $('#<%= lblLoginMessage.ClientID %>').text("Login Failed");
                if (obj.login == "true") {
                    location.reload(true);
                }
            }
        });
        return false;
    }
4

1 に答える 1

3

テストするiPadはありませんが、次の1つまたは組み合わせを試すことができます。

  1. return false;の代わりにを使用return;して、デフォルトのボタンの動作をキャンセルします。
  2. onclick属性の代わりにjqueryを使用してクリックイベントをバインドします。

    $("#btnLogin").click(fnSignUp);
    

    ロジックをページのビューから分離するため、jqueryを使用したバインディングはとにかく優れています。

于 2012-07-20T18:34:10.630 に答える