2016-12-23 5 views
0

私はCodeigniterにサインアップページを持っています。私は、ユーザー名が存在するかどうかをチェックしたいと思います。入力して入力オブジェクト(onblurイベント)を終了します。 ユーザが入力したときに、また入力フィールドにフォーカスを失ったときに、ユーザ名が存在するかどうかをチェックしたいのですか? どうすれば確認できますか? 私は怒鳴るで私のコードの一部を共有: 私のモデルを(そのリターンTrueまたはFalse):validation username by codeigniterのhtml 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

ユーザー名を確認してください。ユーザーが入力するときにユーザー名が存在するかどうか、また入力フィールドにフォーカスを失っているかどうかを確認することを意味しますか? – Perumal

答えて

2

edtUserNameフィールドの変更を確認するAJAX機能があります。お使いのコントローラで

$(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

チェック、重複結果のためには、is_unique方法そのような単純なform_validationを使用することができます - is_uniqueがある

$this->form_validation->set_rules('email', 'Email', 'required|valid_email|is_unique[users.email]'); 

方法とユーザーががあるテーブル名とメールですデータベーステーブルの列名を使用して、一意性をチェックできます。

Form Validation | CodeIgniter 3.1.7 documentation