2014-11-02 89 views
-1

我有以下的HTML代碼,用戶可以註冊到系統。使用jQuery ajax與CodeIgniter啓用按鈕

<div id="usernameMSG"></div><input type="text" id="usernameID" name="username" id="usernameID" placeholder="Username" /> 
    <div id="passwordMSG"></div><input id="passwordID" type="password" name="pass" placeholder="Password" /> 
    <input type="button" name="next" class="next action-button" value="Next" disabled/> 

此外,我有以下jQuery函數,其中檢查用戶鍵入數據庫時​​,如果輸入的用戶名是可用的。

$.post("<?php echo site_url('main/search_user'); ?>",$("#msform").serialize(), function(data){ 
                            $("#usernameMSG").html(data); 
                          // 
                          if  (data == 'available') { 
                          $('.action-button').removeAttr('disabled'); 
                                 } 
                          else if (data == 'not available') { 
                          $('.action-button').attr('disabled'); 
                                  } 
                          // 
                          }); 

主控制器是如下:

<?php if (! defined('BASEPATH')) exit('No direct script access allowed'); 

class Main extends CI_Controller { 
function search_user(){ 
$this->load->model('model_users'); 

if($this->model_users->find_user_by_username($this->input->post('username'))) 
       { 
       echo "not available"; 
       return true; 
       } 
else 
    { 
    echo "available"; 
    return false; 
    } 

} 
} 
?> 

的型號功能是:

<?php 
Class Model_users extends CI_Model{ 
public function find_user_by_username() 
{ 
$this->db->select('*'); 
$this->db->where('USERNAME',$this->input->post('username')); 
$this->db-> limit(1); 
$query = $this->db->get('USERS'); 

if($query->num_rows() == 1) 
      { 
      return true; 
      }    
else 
    { 
    return false; 
    } 
} 
}//end of model 

我的問題是如何使按鈕,如果用戶名可用JQuery的內功能?

+0

也許有人可以消化我一個更好的方法我如何檢查用戶名是否可用或不在jQuery功能 – Csalt 2014-11-02 18:41:23

+0

您是否嘗試添加檢查返回的消息,並更改$ post回調函數內的按鈕屬性? – sinisake 2014-11-02 18:42:10

+0

是的但沒有工作 – Csalt 2014-11-02 18:48:26

回答

0

控制器:

<?php if (! defined('BASEPATH')) exit('No direct script access allowed'); 

class Main extends CI_Controller { 
function search_user(){ 
$this->load->model('model_users'); 

if($this->model_users->find_user_by_username($this->input->post('username'))) 
       { 
        echo "not available"; 
       } 
else 
    { 
     echo "available"; 
    } 

} 
} 
?> 

的jQuery:

$('#usernameID').keyup(function(){ 
     //check if the user name is already taken 
     $.post("<?php echo site_url('main/search_user'); ?>", 
       $("#msform").serialize(),  
       function(data){ 

        if (data == 'available') { 
          $('.action-button').removeAttr('disabled'); 
        } 

    }); 
+0

如果不可用:'else if(data =='not available'){('。action-button')。attr('disabled'); }'? – Csalt 2014-11-02 19:29:12

0

使用JSON對象在PHP笨和jQuery的suceess功能得到JSON很高興: https://ellislab.com/codeigniter/user-guide/libraries/output.html

然後使用removeAttr: http://api.jquery.com/removeattr/

$('.action-button').removeAttr('disabled'); 

PHP代碼(從https://ellislab.com/codeigniter/user-guide/libraries/output.html):

$this->output 
->set_content_type('application/json') 
->set_output(json_encode(array('is_available' => 'true'))); 

對於檢查真的還是假的,你必須檢查由服務器返回的JSON,

function(result){ 
    if(result.is_available == 'true'){ 
     $('.action-button').removeAttr('disabled'); 
    } 
} 
+0

但是如何檢查?如果說明我的看法如何? – Csalt 2014-11-02 18:49:57

+0

$('。action-button')。removeAttr('disabled');和$('。action-button')。attr('disabled');它不起作用 – Csalt 2014-11-03 18:19:55

0

您可以指定不工作? 是不顯示的按鈕還是檢查用戶名不工作?

您是否注意到: $ this-> db-> limit(1);

不管怎樣,你爲什麼要限制結果呢?如果用戶存在,它就存在,如果它是唯一的,則只有一個條目。

+0

JQuery函數。工作不正常。如果用戶名不可用,應禁用提交按鈕,如果可用,則應啓用提交按鈕。 – Csalt 2014-11-03 17:21:32

+0

我修復了這一行:$ this-> db-> limit(1);但是,如果用戶名不可用,它仍然不會禁用該按鈕。你可以讓我以不同的方式寫入JQuery代碼... – Csalt 2014-11-03 17:27:55