2012-07-20 31 views
0

我有一个用asp.net编写的网站(这部分只是HTML和jQuery虽然)与一个表单提交按钮。我为jquery中的每个文本框编写了自己的验证,如果每个文本都通过,那么它通过ajax发送表单到c#代码隐藏。这适用于每个浏览器都很好,即使是IE7和IE8,问题是当我通过IPad(Safari)浏览页面时,它会完全跳过验证并刷新整个页面。我只有一个4岁的ipad与ios2我相信或者也许ios3,无论哪种方式,我希望这可以在所有浏览器中工作。停止提交按钮从回发上ipad asp.net

代码:

<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; 
    } 
+0

你可以发布你的'fnValidateLogIn'函数吗? – 2012-07-20 18:24:46

+0

多数民众赞成它,只是输入错误的问题,我会编辑 – 2012-07-20 18:26:17

回答

3

我没有一个iPad来进行测试,但你可以尝试一个或以下的组合:

  1. 使用return false;代替return;取消默认按钮行为。
  2. 使用jquery而不是onclick属性绑定click事件。

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

    使用jquery绑定是更好的反正,因为你将逻辑与页面视图分开。