2010-05-19 28 views
0

我已檢查用戶名可用性。問題是,即使用戶名不可用,表單也會發布。如何禁用表單提交如果用戶名不可用

編輯代碼:

<SCRIPT type="text/javascript"> 
$(document).ready(function(){ 

$("#emailch").change(function() { 

    var usr = $("#emailch").val(); 
    if(usr.length >= 3) 
    { 
     $("#status").html('<img src="images/loader.gif" align="absmiddle">&nbsp;Checking availability...'); 
     $.ajax({ 
      type: "POST", 
      url: "includes/check.php", 
      data: "username="+ usr, 
      success: function(msg){ 
       $("#status").ajaxComplete(function(event, request, settings){ 
        if(msg == 'OK') 
        { 
         $("#username").removeClass('object_error'); // if necessary 
         $("#username").addClass("object_ok"); 
         $(this).html('&nbsp;<img src="images/tick.gif" align="absmiddle">'); 

        } 
        else 
        { 
         $("#username").removeClass('object_ok'); // if necessary 
         $("#username").addClass("object_error"); 
         $(this).html(msg); 


        } 

       }); 

      } 
     }); 
    } 

    else 
    { 
     $("#status").html('<font color="red">The username should have at least <strong>3</strong> characters.</font>'); 
     $("#username").removeClass('object_ok'); // if necessary 
     $("#username").addClass("object_error"); 
    } 

}); 

}); 
</SCRIPT> 

我想的是,如果用戶名不可形式不應該被公佈。我曾嘗試在IF條件下使用return false;,但它失敗。請提出任何其他方法。任何幫助將不勝感激。

+1

從哪裏調用此代碼?向我們展示它的上下文。 'return false;'會起作用,你只需把它放在正確的地方。 – 2010-05-19 10:49:44

+0

在哪裏調用這個函數?在onsubmit處理程序中? – 2010-05-19 10:49:45

+0

@Jan Hancic,薩爾曼,代碼被編輯。請檢查! – Rajasekar 2010-05-19 10:53:45

回答

1

上提交返回false無論什麼時候,如果字段是好做形式您阿賈克斯發送,如果它壞了,錯誤出或任何你需要

<form action="http://www.google.com" id="formId" method="post"> 
<input type="text" id="emailch" name="emailch" /> 
<input type="submit" /> 
</form> 


<script type="text/javascript"> 

$(document).ready(function(){ 

    $("#formId").submit(function() { 

     if($("#emailch").val().length >= 3){ 
      alert('the form is going to post via ajax here'); 
     }else{ 
      alert('user name invalid error out or whatever you need to do.'); 
     } 
     return false; 
    }); 
}); 
</script> 
0

如果用戶名不可用,請將您的success函數中的標誌(變量)設置爲false(例如)。然後檢查表單的onsubmit處理程序中的該標誌,如果標誌等於false,則從該事件處理程序返回false,並且表單不會提交。

1

使用返回false從停止形式被提交在jQuery中並不能很好地工作。使用event.preventDefault()來代替,請嘗試如下所示:

$(function() { 
    $('#formid').submit(function(event) { 
     if ($("#emailch").val().length < 3) { 
      event.preventDefault(); 
     } 
    }); 
}); 
+0

'return false;'很好,你面臨的問題是什麼? – 2010-05-20 12:30:47

+0

哦,你似乎是對的。我清楚地記得前一段時間測試它,但我認爲它沒有工作(但event.preventDefault())。一定有什麼東西了。 – arnemart 2010-05-21 08:02:26

相關問題