douben1891 2013-12-06 06:11
浏览 37
已采纳

Codeigniter自动完成功能无效

Hello Auto completion is not working well in my application.When we type a name it displays only a blank list[ Screenshots attached ].

Controller Code

    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);
}

Model Code

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();

}

Am a beginner in php as well as Codeigniter

  • 写回答

2条回答 默认 最新

  • duanjiati1755 2013-12-06 06:53
    关注

    Just echo your data in your controller

    change

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

    To

    echo $this->user_model->getAutoUserList($letters);
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 本题的答案是不是有问题
  • ¥15 关于#r语言#的问题:(svydesign)为什么在一个大的数据集中抽取了一个小数据集
  • ¥15 C++使用Gunplot
  • ¥15 这个电路是如何实现路灯控制器的,原理是什么,怎么求解灯亮起后熄灭的时间如图?
  • ¥15 matlab数字图像处理频率域滤波
  • ¥15 在abaqus做了二维正交切削模型,给刀具添加了超声振动条件后输出切削力为什么比普通切削增大这么多
  • ¥15 ELGamal和paillier计算效率谁快?
  • ¥15 蓝桥杯单片机第十三届第一场,整点继电器吸合,5s后断开出现了问题
  • ¥15 file converter 转换格式失败 报错 Error marking filters as finished,如何解决?
  • ¥15 Arcgis相交分析无法绘制一个或多个图形