2015-06-14 203 views
1

我想验证使用jQuery,Ajax和PHP的HTML表单。我在jquery中写了这个函数,它使用ajax post request来检查用户名的可用性。但问题是它总是返回一个false。我是新来的jQuery和JavaScript。我已经尝试了很多,但我无法弄清楚问题所在。请帮忙。javascript函数总是返回false

function isvalid_username() 
{ 
var username=$('#username').val(); 
var option=false; 
     if(username == "") 
     { 
      $('#username').removeClass('valid').addClass('invalid'); 
      $('#username_feedback').addClass('error').html("Please choose a username!!"); 
      option=false; 
     } 
     else if(username.length < 4) 
     { 
      $('#username').removeClass('valid').addClass('invalid'); 
      $('#username_feedback').addClass('error').html("Your username must be atleast 4 characters."); 
      option=false; 
     } 
     else 
     { 
      $.post('php/check_username_avail.php',{ username : username },function(data){ 

       if(data == "false") 
       { 

        $('#username').removeClass('valid').addClass('invalid'); 
        $('#username_feedback').addClass('error').html("Sorry! That username is already taken. Try a different one."); 
        option= false; 
       } 
       else if(data == "true") 
       { 
        $('#username').removeClass('invalid').addClass('valid'); 
        $('#username_feedback').html(""); 
        alert('Now it should return true'); 
        option=true; 
       } 
       else 
       { 
        $('#username').removeClass('valid').addClass('invalid'); 
        $('#username_feedback').addClass('error').html(data); 
        option=false; 
       } 
      }).error(function(){ 
       alert("An error occurred. Unable to validate username"); 
      }); 
     } 
     return option; 
} 

编辑:我读过other post。但我仍然没有找到验证表单的方法。我想用这与我的代码提交处理函数:

$('#signup_form').submit(function(event) 
{ 
    if(isvalid_first_name() && isvalid_username() && isvalid_email() && isvalid_password()) 
    { 
    alert('Submitting the form'); 
    } 
    else 
    { 
    event.preventDefault(); 
    $('#submit_feedback').html("Please correct the above problems first"); 
    } 

}); 

如果不能做到这样,那我应该用什么样的技术,来验证在客户方的形式?

+0

仅供参考,错误'已弃用,使用'失败' –

+0

好的!完成。也理解我的代码的问题。但没有得到解决方案。 – Raman

+0

如果我使用承诺,那么我应该如何更改我的处理程序,以便表单验证不受影响? – Raman

回答

0

那么,因为你没有等待AJAX​​完成并立即返回选项,这已经是错误的。尝试下面的代码。

function isvalid_username(){ 
     var username=$('#username').val(); 
     var option=false; 
     if(username == "") 
     { 
      $('#username').removeClass('valid').addClass('invalid'); 
      $('#username_feedback').addClass('error').html("Please choose a username!!"); 
      return option; 
     } 
     else if(username.length < 4) 
     { 
      $('#username').removeClass('valid').addClass('invalid'); 
      $('#username_feedback').addClass('error').html("Your username must be atleast 4 characters."); 
      return option; 
     } 
     else 
     { 
      $.post('php/check_username_avail.php',{ username : username },function(data){ 

       if(data == "false") 
       { 

        $('#username').removeClass('valid').addClass('invalid'); 
        $('#username_feedback').addClass('error').html("Sorry! That username is already taken. Try a different one."); 
        return option; 
       } 
       else if(data == "true") 
       { 
        $('#username').removeClass('invalid').addClass('valid'); 
        $('#username_feedback').html(""); 
        alert('Now it should return true'); 
        option=true; 
        return option; 
       } 
       else 
       { 
        $('#username').removeClass('valid').addClass('invalid'); 
        $('#username_feedback').addClass('error').html(data); 
        return option; 
       } 
      }).error(function(){ 
       alert("An error occurred. Unable to validate username"); 
      }); 
     } 
} 
+0

您不能从ajax呼叫返回。在jQuery中,这将始终返回承诺界面 –

+0

此代码不起作用 – Raman