2013-01-13 48 views
0

我正在使用jQuery(jquery.validate.js)进行表单验证。我需要检查一个用户名是否可用,但我不知道如何去做。请帮忙。用户名可用性检查的jquery表单验证

HTML:

<input type="text" name="username" class="required checkAvailability" /> 

的jQuery:

$(document).ready(function(){ 

    $.validator.addMethod("checkAvailability", function(username) { 
    var isSuccess = false; 
    $.ajax({ url: "/checkAvailibility", 
     data: "username=" + username, 
     async: false, 
     success: function(available) { 
     if (available == "TRUE") 
      isSuccess = true; 
     return $("message", returnData).text() == "Username available"; 
     } 
    }); 
    }, "Username not available"); 

    $("#formID").validate(); 

}); 

服务器侧程序返回一个字符串,它可以是 “TRUE” 或 “FALSE”(由 “returnData” 变量返回)。

我的问题: 如何将消息和检查结果都返回给validate(),以便消息可以显示在字段旁边,如果用户名不可用,表单将不会被提交?

+0

http://docs.jquery.com/Plugins/Validation/Validator/addMethod#namemethodmessage – Sparky

回答

0

你可以重构你的代码吗?例如:

$(document).ready(function(){ 

    $validUsername = false; 

    $("input.checkAvailability").keyup(function(){ 

    $.ajax({ url: "/checkAvailibility", 
     data: "username=" + $(this).val(), 
     success: function(available) { 
     if (available == "TRUE"){ 
      $validUsername = true; 
      $("message", returnData).text("Username available"); 
     } 
     else{ 
      // Do something 
     } 
     } 
    }); 

    }); 

    $.validator.addMethod("checkAvailability", function(username) { 
    return $validUsername; 
    }, "Username not available"); 

    $("#formID").validate(); 

}); 
+0

谢谢,但无论我的服务器端程序返回什么,“用户名不可用”总是显示出来。什么似乎是问题? –

0

检查服务器上的表单字段的标准和最简单的方法是使用'remote'方法。从你的服务器端方法只返回文本'真'或'假',而不是returnData = true或其他任何东西。

的Javascript应该是这个

<script> 
$(function() { 
    $('form').validate({ 
     rules: { username: 
      { 
      remote: '/checkAvailibility' 
      } 
     } 
    }); 
}); 
</script> 
0

我用笨实现这一点。愿这有助于你。

控制器功能:

function checkUserName() 
{ 
    $user_name=$_GET['user_name']; 
    if(isset($user_name)) 
    { 
     $arr=$this->home_model->checkUserName($user_name); 
     $cnt=count($arr); 
     if($cnt > 0) 
      echo json_encode(false); 
     else 
      echo json_encode(true); 
    } 
} 

型号功能:

function checkUserName($user_name) 
{ 
    $this->db->select('a.id'); 
    $this->db->like('a.user_name',$user_name,'none'); 
    return $this->db->get('accounts a')->result(); 
    $this->db->get('accounts a')->result(); 
    echo $this->db->last_query(); 
    die; 
} 

HTML和JS:

<input type="text" name="user_name" placeholder="User name" id="user_name" class="form-control" value=""> 

JS:

$('#signup').validate(
{ 
    rules: 
    { 
     user_name: 
     { 
       //required: true, 
     remote: baseUrl+'home/checkUserName' 
     } 
    } 

    //Your Code here....... 
} 
相关问题