Javascript 代码点火器自动完成不工作

Javascript 代码点火器自动完成不工作,javascript,php,codeigniter,Javascript,Php,Codeigniter,Hello自动完成在我的应用程序中运行不正常。当我们键入名称时,它只显示一个空白列表[附加屏幕截图] 控制器代码 public function list_UserByName($letters) { if(strpos($letters, ",")) { $letters1 = explode(",",$letters); $lecount = count($letters1); $letters = $letters

Hello自动完成在我的应用程序中运行不正常。当我们键入名称时,它只显示一个空白列表[附加屏幕截图]

控制器代码

    public function list_UserByName($letters)
{
    if(strpos($letters, ","))
    {
        $letters1 = explode(",",$letters);
        $lecount  = count($letters1);
        $letters  = $letters1[$lecount-1];
    }
    $letters = preg_replace("/[^a-z0-9 ]/si","",$letters);
    $response=$this->user_model->getAutoUserList($letters);
}
模型代码

public function getAutoUserList($letters)
{
    $letters = preg_replace("/[^a-z0-9 ]/si","",$letters);
    //AND user_type='C' AND user_status='A'
    $query="select * from gm_users where uname Like '%$letters%'";
    $result_query    =$this->db->query($query);
    foreach($result_query->result() as $result)
    {
    //echo "###".$result."|";
    //$pinlevel =$this->functions->get_pinlevel($result->pinLevel);
    //echo $result->userId."###".$result->uname." [ ".$pinlevel." ] "."|";
    echo $result->userId."###".$result->uname."".$result->address." ".$result->city."|";
    }

}
billing.php

   <input type="text" autocomplete="off" size="20" name="txtname" id="txtname" onkeyup="ajax_showOptions(this,'getCountriesByLetters',event);" value=""/>

ajax-dynamic-list.js

    /************************************************************************************************************
(C) www.dhtmlgoodies.com, April 2006

This is a script from www.dhtmlgoodies.com. You will find this and a lot of other scripts at our website.   

Terms of use:
You are free to use this script as long as the copyright message is kept intact. However, you may not
redistribute, sell or repost it without our permission.

Thank you!

www.dhtmlgoodies.com
Alf Magne Kalleland

************************************************************************************************************/   

var ajaxBox_offsetX = 25;
var ajaxBox_offsetY = 5;
var ajax_list_externalFile = site_url+'/catalog/list_UserByName';   // Path to external file
var minimumLettersBeforeLookup = 1; // Number of letters entered before a lookup is performed.

var ajax_list_objects = new Array();
var ajax_list_cachedLists = new Array();
var ajax_list_activeInput = false;
var ajax_list_activeItem;
var ajax_list_optionDivFirstItem = false;
var ajax_list_currentLetters = new Array();
var ajax_optionDiv = false;
var ajax_optionDiv_iframe = false;

var ajax_list_MSIE = false;
if(navigator.userAgent.indexOf('MSIE')>=0 && navigator.userAgent.indexOf('Opera')<0)ajax_list_MSIE=true;

var currentListIndex = 0;

function ajax_getTopPos(inputObj)
{

  var returnValue = inputObj.offsetTop;
  while((inputObj = inputObj.offsetParent) != null){
    returnValue += inputObj.offsetTop;
  }
  return returnValue;
}
function ajax_list_cancelEvent()
{
    return false;
}

function ajax_getLeftPos(inputObj)
{
  var returnValue = inputObj.offsetLeft;
  while((inputObj = inputObj.offsetParent) != null)returnValue += inputObj.offsetLeft;

  return returnValue;
}

// Edited
function ajax_option_setValue_bkp(e,inputObj)
{
    if(!inputObj)inputObj=this;
    var tmpValue = inputObj.innerHTML;
    //alert(inputObj.id);
    document.getElementById('saleUserId').value=inputObj.id;
    if(ajax_list_MSIE)tmpValue = inputObj.innerText;else tmpValue = inputObj.textContent;
    if(!tmpValue)tmpValue = inputObj.innerHTML;
    val  = ajax_list_activeInput.value.split(',');
    vals = '';
    count = val.length - 1;
    for(i=0;i<count;i++)
    {
        vals = vals + val[i] + ',';
    }

    ajax_list_activeInput.value = vals + tmpValue;
    if(document.getElementById(ajax_list_activeInput.name + '_hidden'))document.getElementById(ajax_list_activeInput.name + '_hidden').value = inputObj.id; 
    ajax_options_hide();
}

function ajax_option_setValue(e,inputObj)
{
    if(!inputObj)inputObj=this;
    var tmpValue = inputObj.innerHTML;
    //alert(inputObj.id);
    document.getElementById('saleUserId').value=inputObj.id;
    if(ajax_list_MSIE)tmpValue = inputObj.innerText;else tmpValue = inputObj.textContent;
    if(!tmpValue)tmpValue = inputObj.innerHTML;
    ajax_list_activeInput.value = tmpValue;
    if(document.getElementById(ajax_list_activeInput.name + '_hidden'))document.getElementById(ajax_list_activeInput.name + '_hidden').value = inputObj.id; 
    ajax_options_hide();
}

function ajax_options_hide()
{
    if(ajax_optionDiv)ajax_optionDiv.style.display='none';  
    if(ajax_optionDiv_iframe)ajax_optionDiv_iframe.style.display='none';
}

function ajax_options_rollOverActiveItem(item,fromKeyBoard)
{
    if(ajax_list_activeItem)ajax_list_activeItem.className='optionDiv';
    item.className='optionDivSelected';
    ajax_list_activeItem = item;

    if(fromKeyBoard){
        if(ajax_list_activeItem.offsetTop>ajax_optionDiv.offsetHeight){
            ajax_optionDiv.scrollTop = ajax_list_activeItem.offsetTop - ajax_optionDiv.offsetHeight + ajax_list_activeItem.offsetHeight + 2 ;
        }
        if(ajax_list_activeItem.offsetTop<ajax_optionDiv.scrollTop)
        {
            ajax_optionDiv.scrollTop = 0;   
        }
    }
}

function ajax_option_list_buildList(letters,paramToExternalFile)
{

    ajax_optionDiv.innerHTML = '';
    ajax_list_activeItem = false;
    if(ajax_list_cachedLists[paramToExternalFile][letters.toLowerCase()].length<=1){
        ajax_options_hide();
        return;         
    }



    ajax_list_optionDivFirstItem = false;
    var optionsAdded = false;
    for(var no=0;no<ajax_list_cachedLists[paramToExternalFile][letters.toLowerCase()].length;no++){
        if(ajax_list_cachedLists[paramToExternalFile][letters.toLowerCase()][no].length==0)continue;
        optionsAdded = true;
        var div = document.createElement('DIV');
        var items = ajax_list_cachedLists[paramToExternalFile][letters.toLowerCase()][no].split(/###/gi);

        if(ajax_list_cachedLists[paramToExternalFile][letters.toLowerCase()].length==1 && ajax_list_activeInput.value == items[0]){
            ajax_options_hide();
            return;                     
        }


        div.innerHTML = items[items.length-1];
        div.id = items[0];
     div.className='optionDiv';
        div.onmouseover = function(){ ajax_options_rollOverActiveItem(this,false) }
        div.onclick = ajax_option_setValue;
        if(!ajax_list_optionDivFirstItem)ajax_list_optionDivFirstItem = div;
        ajax_optionDiv.appendChild(div);
    }   
    if(optionsAdded){
        ajax_optionDiv.style.display='block';
        if(ajax_optionDiv_iframe)ajax_optionDiv_iframe.style.display='';
        ajax_options_rollOverActiveItem(ajax_list_optionDivFirstItem,true);
    }

}

function ajax_option_list_showContent(ajaxIndex,inputObj,paramToExternalFile,whichIndex)
{
    if(whichIndex!=currentListIndex)return;
    var letters = inputObj.value;
    var content = ajax_list_objects[ajaxIndex].response;
    var elements = content.split('|');
    //alert(content);
    ajax_list_cachedLists[paramToExternalFile][letters.toLowerCase()] = elements;
    ajax_option_list_buildList(letters,paramToExternalFile);

}

function ajax_option_resize(inputObj)
{
    ajax_optionDiv.style.top = (ajax_getTopPos(inputObj) + inputObj.offsetHeight + ajaxBox_offsetY) + 'px';
    ajax_optionDiv.style.left = (ajax_getLeftPos(inputObj) + ajaxBox_offsetX) + 'px';
    if(ajax_optionDiv_iframe){
        ajax_optionDiv_iframe.style.left = ajax_optionDiv.style.left;
        ajax_optionDiv_iframe.style.top = ajax_optionDiv.style.top;         
    }       

}

function ajax_showOptions(inputObj,paramToExternalFile,e)
{
        document.getElementById('saleUserId').value='';
    if(e.keyCode==13 || e.keyCode==9)return;
    if(ajax_list_currentLetters[inputObj.name]==inputObj.value)return;
    if(!ajax_list_cachedLists[paramToExternalFile])ajax_list_cachedLists[paramToExternalFile] = new Array();
    ajax_list_currentLetters[inputObj.name] = inputObj.value;
    if(!ajax_optionDiv){
        ajax_optionDiv = document.createElement('DIV');
        ajax_optionDiv.id = 'ajax_listOfOptions';   
        document.body.appendChild(ajax_optionDiv);

        if(ajax_list_MSIE){
            ajax_optionDiv_iframe = document.createElement('IFRAME');
            ajax_optionDiv_iframe.border='0';
            ajax_optionDiv_iframe.style.width =   ajax_optionDiv.clientWidth + 'px';
            ajax_optionDiv_iframe.style.height = ajax_optionDiv.clientHeight + 'px';
            ajax_optionDiv_iframe.id = 'ajax_listOfOptions_iframe';

            document.body.appendChild(ajax_optionDiv_iframe);
        }

        var allInputs = document.getElementsByTagName('INPUT');
        for(var no=0;no<allInputs.length;no++){
            if(!allInputs[no].onkeyup)allInputs[no].onfocus = ajax_options_hide;
        }           
        var allSelects = document.getElementsByTagName('SELECT');
        for(var no=0;no<allSelects.length;no++){
            allSelects[no].onfocus = ajax_options_hide;
        }

        var oldonkeydown=document.body.onkeydown;
        if(typeof oldonkeydown!='function'){
            document.body.onkeydown=ajax_option_keyNavigation;
        }else{
            document.body.onkeydown=function(){
                oldonkeydown();
            ajax_option_keyNavigation() ;}
        }
        var oldonresize=document.body.onresize;
        if(typeof oldonresize!='function'){
            document.body.onresize=function()  {ajax_option_resize(inputObj); };
        }else{
            document.body.onresize=function(){oldonresize();
            ajax_option_resize(inputObj) ;}
        }

    }

    if(inputObj.value.length<minimumLettersBeforeLookup){
        ajax_options_hide();
        return;
    }


    ajax_optionDiv.style.top = (ajax_getTopPos(inputObj) + inputObj.offsetHeight  + ajaxBox_offsetY) + 'px';
    ajax_optionDiv.style.left = (ajax_getLeftPos(inputObj) + ajaxBox_offsetX) + 'px';
    if(ajax_optionDiv_iframe){
        ajax_optionDiv_iframe.style.left = ajax_optionDiv.style.left;
        ajax_optionDiv_iframe.style.top = ajax_optionDiv.style.top;         
    }

    ajax_list_activeInput = inputObj;
    ajax_optionDiv.onselectstart =  ajax_list_cancelEvent;
    currentListIndex++;
    if(ajax_list_cachedLists[paramToExternalFile][inputObj.value.toLowerCase()]){
        ajax_option_list_buildList(inputObj.value,paramToExternalFile,currentListIndex);            
    }else{
        var tmpIndex=currentListIndex/1;
        ajax_optionDiv.innerHTML = '';
        var ajaxIndex = ajax_list_objects.length;

    ajax_list_objects[ajaxIndex] = new sack();

        var search_key = inputObj.value.replace(" ","+");
        //search_key1 = search_key.replace(",",",");
        var url = ajax_list_externalFile + '/' +search_key;


        ajax_list_objects[ajaxIndex].requestFile = url; // Specifying which file to get
        ajax_list_objects[ajaxIndex].onCompletion = function(){ ajax_option_list_showContent(ajaxIndex,inputObj,paramToExternalFile,tmpIndex); };   // Specify function that will be executed after file has been found
        ajax_list_objects[ajaxIndex].runAJAX();     // Execute AJAX function        
    }


}

function wordcount(string) {
  var a = string.split(/\s+/g); // split the sentence into an array of words
  return a.length;
  }
function ajax_option_keyNavigation(e)
{
    if(document.all)e = event;

    if(!ajax_optionDiv)return;
    if(ajax_optionDiv.style.display=='none')return;

    if(e.keyCode==38){  // Up arrow
        if(!ajax_list_activeItem)return;
        if(ajax_list_activeItem && !ajax_list_activeItem.previousSibling)return;
        ajax_options_rollOverActiveItem(ajax_list_activeItem.previousSibling,true);
    }

    if(e.keyCode==40){  // Down arrow
        if(!ajax_list_activeItem){
            ajax_options_rollOverActiveItem(ajax_list_optionDivFirstItem,true);
        }else{
            if(!ajax_list_activeItem.nextSibling)return;
            ajax_options_rollOverActiveItem(ajax_list_activeItem.nextSibling,true);
        }
    }

    /*if(e.keyCode==13 || e.keyCode==9){    // Enter key or tab key
        if(ajax_list_activeItem && ajax_list_activeItem.className=='optionDivSelected')ajax_option_setValue(false,ajax_list_activeItem);
        if(e.keyCode==13)return false; else return true;
    }
    if(e.keyCode==27){  // Escape key
        ajax_options_hide();            
    }*/
}


//document.documentElement.onclick = autoHideList;

function autoHideList(e)
{
    if(document.all)e = event;

    if (e.target) source = e.target;
        else if (e.srcElement) source = e.srcElement;
        if (source.nodeType == 3) // defeat Safari bug
            source = source.parentNode;     
    if(source.tagName.toLowerCase()!='input' && source.tagName.toLowerCase()!='textarea')ajax_options_hide();

}
/************************************************************************************************************
(C) www.dhtmlgoodies.com,2006年4月
这是来自www.dhtmlgoodies.com的脚本。你可以在我们的网站上找到这个和很多其他脚本。
使用条款:
只要版权信息保持完整,您就可以自由使用此脚本。然而,你可能不会
未经我们的许可,重新分发、出售或重新发布。
非常感谢。
www.dhtmlgoodies.com
阿尔夫·马格纳·卡莱兰
************************************************************************************************************/   
var ajaxBox_offsetX=25;
var ajaxBox_offsetY=5;
var ajax_list_externalFile=site_url+'/catalog/list_UserByName';//外部文件的路径
var minimumLettersBeforeLookup=1;//执行查找之前输入的字母数。
var ajax_list_objects=new Array();
var ajax_list_cachedLists=new Array();
var ajax\u list\u activeInput=false;
var ajax\u list\u activeItem;
var ajax_list_optionDivFirstItem=false;
var ajax_list_currentLetters=新数组();
var ajax_optionDiv=错误;
var ajax_optionDiv_iframe=false;
var ajax_list_MSIE=false;
如果(navigator.userAgent.indexOf('MSIE')>=0&&navigator.userAgent.indexOf('Opera')更改

$response=$this->user_model->getAutoUserList($letters);

关于stackoverflow这个主题有一个问题,但整个过程完全不同


只需在控制器中回显您的数据即可

改变

$response=$this->user_model->getAutoUserList($letters);


您能给您看一下ajax代码吗。@phpLearner我已经用ajax更新了我的问题code@Lighter我是php初学者…echo$result\u query;这是否正确当您使用ajax请求页面时,您需要访问
controller/method
$response=$this->user_model->getAutoUserList($letters);
echo $this->user_model->getAutoUserList($letters);