2015-03-19 76 views
2

我使用ajax驗證我的表單,我只是檢查是否有重複的用戶名,如果有它會返回false,否則返回true。onsubmit仍然提交表格即使在返回false從ajax驗證

這裏是我的ajax:

function checkform(){ 
    var username = $("#username").val(); 
    $.ajax({url:"<?php echo base_url() ?>Delivery/usernamecheck/", 
     data: {username: username}, 
     type:'post', 
     async:false, 
     success: function(data){ 
      if(data > 0){ 
       $("#info").attr("class","form-group has-error"); 
       $("#info1").html("Duplicate Username!"); 
       event.preventDefault(); 
       return false; 
      }else{ 
       return true; 
      } 
     } 
    }); 
} 

我的html:

<form class="form-signin" role="form" action="<?php echo base_url() ?>Delivery/reg/" method = "post" onsubmit=" return checkform();"> 
</form> 

即使在返回虛假的形式提交依舊。任何想法爲什麼?

也沒有錯誤。

回答

3

您不能防止通過返回Ajax響應假提交表單的它需要在該函數,解決方法是始終返回false和Ajax響應重新提交:

var secondCall = false; 
function checkform(){ 
    if (secondCall) { 
     return; 
    } 
    var username = $("#username").val(); 
    $.ajax({url:"<?php echo base_url() ?>Delivery/usernamecheck/", 
     data: {username: username}, 
     type:'post', 
     async:false, 
     success: function(data){ 
      if(data > 0){ 
       $("#info").attr("class","form-group has-error"); 
       $("#info1").html("Duplicate Username!"); 
      }else{ 
       secondCall = true; 
       $('.form-signin').submit(); 
      } 
     } 
    }); 
    return false; 
} 

注意,它的更好在JavaScript中綁定提交事件:

$('.form-signin').submit(checkform); 
+0

$('。form-signin')。submit(checkform); < - 這是什麼意思?謝謝你的回答,我會試一試 – magicianiam 2015-03-19 13:49:36

+0

@magicianIam它與html中的onsubmit相同,但是在javascript中添加。 – jcubic 2015-03-19 13:51:20

+0

我試過並得到這個錯誤:未捕獲RangeError:超過最大調用堆棧大小。 – magicianiam 2015-03-19 13:55:33

相關問題