我在Codeigniter中有一个注册页面。我想检查用户名是否存在,当他们输入并退出其输入对象(onblur事件)时。 这意味着我想在用户输入用户名时检查用户名是否存在,以及在输入字段失去焦点时? 我怎么检查呢? 我在下面分享了部分代码: 我的模型(返回正确或错误):
public function Check_UserName_Validate(){
$CMD = "call UserName_Validate($this->input->post('edtUserName'));";
$query = $this->db->query($CMD);
if (mysqli_more_results($this->db->conn_id))
mysqli_next_result($this->db->conn_id);
return $query->row();
}
我的观点:
<div>
First Name : <input type="text" id="edtFirstName" class="MyInputs">
<br>
Last Name : <input type="text" id="edtLastName" class="MyInputs">
<br>
Username : <input type="text" id="edtUserName" class="MyInputs">
<br>
Password : <input type="password" id="edtPassword" class="MyInputs">
</div>
我的控制器:
public function Signup($Flag = 0){
...
$data["ErrorMSG"] = "";
$data["ErrorKind"] = 0;
$this->form_validation->set_rules("edtFirstName", $data["FirstName_Caption"], "trim|required");
$this->form_validation->set_rules("edtLastName", $data["LastName_Caption"], "trim|required");
$this->form_validation->set_rules("edtUserName", $data["Username_Caption"], "trim|required");
$this->form_validation->set_rules("edtPassword", $data["Password_Caption"], "trim|required");
if ($Flag == 1){
if ($this->form_validation->run() == FALSE) {
$data["ErrorMSG"] = validation_errors();
$data["ErrorKind"] = 4;
$this->load->view("Signup", $data);
}
else{
/* Insert user information to database */
}
}
else{
$this->load->view("Signup", $data);
}
}
请指导我。 感谢
答案 0 :(得分:2)
您可以使用AJAX函数检查edtUserName
字段更改。
$(document).ready(function(){
var $username_field = $('#edtUserName');
$username_field.on('keyup', function(){
check_username($(this).val());
});
$username_field.on('blur', function(){
check_username($(this).val());
});
});
function check_username(value)
{
$.post('site/username_exits', {edtUserName : value}, function(response) {
if (response.exists) {
// perform what is necessary when the username exists
}
}, "json");
}
在你的控制器中,你会添加:
public function username_exits()
{
if($this->input->is_ajax_request())
{
// load model first
$this->load->model(<MODEL-NAME>);
$exists = $this-><MODEL-NAME>->Check_UserName_Validate($this->input->post('edtUserName'));
echo json_encode(array('exists' => $exists));
}
else
{
show_404();
}
}
然后你应该在模型函数中改变一点。从中删除$this->input->post
并将用户名作为参数传递。这样您就可以将数据收集到控制器中了。
public function Check_UserName_Validate($username){
$CMD = "call UserName_Validate(?);";
$query = $this->db->query($CMD, $username);
if (mysqli_more_results($this->db->conn_id))
mysqli_next_result($this->db->conn_id);
return $query->row();
}
答案 1 :(得分:1)
要检查重复结果,您可以使用简单的form_validation is_unique 方法 -
$this->form_validation->set_rules('email', 'Email', 'required|valid_email|is_unique[users.email]');
is_unique 是一种方法,用户是表名,电子邮件是数据库表中的列名,使用它可以检查唯一性