[原创]搜索智能提示AutoComplate.js

// -----------Create by sjett 2007-11-19----------------
 
    
var  _outTime  =   3000 ;     // setTimeOut(function,outTime);
     var  inputObj  =   false ;              // current input text control
     var  setTimeOutId  =   false ;
    
var  displayDiv  =   false ;         // display div
    
    
function  autoComplate_Init(ObjId)
    
{
        inputObj 
= document.getElementById(ObjId);
        _outTime 
= isNaN(parseInt(inputObj.getAttribute("outTime"))) ? _outTime : parseInt(inputObj.getAttribute("outTime"));
        
        autoComplate_InitEvent();               
//init input control Event
        autoComplate_InitDisplayDiv();
    }

    
    
function  autoComplate_InitEvent()
    
{
        inputObj.onkeyup 
= autoComplate_ChangeEvent;  //onchange onpropertychange
        inputObj.onblur = autoComplate_DisposeEvent;
    }

    
    
function  autoComplate_InitDisplayDiv()
    
{
        
var divHtml = '<div id="autoComplateList"></div>';
        document.write(divHtml);
        
        displayDiv 
= document.getElementById('autoComplateList');
        autoComplate_DisposeEvent();    
//hiddern
        displayDiv.style.top = (inputObj.offsetTop + inputObj.offsetHeight) + "px";   //top,left
        displayDiv.style.left = inputObj.offsetLeft + "px";
        displayDiv.style.width 
= inputObj.offsetWidth + "px";   //height,width
    }


    
function  autoComplate_ChangeEvent()
    
{
        
if (inputObj.value == '') {return;}
        
if (setTimeOutId) 
            
{clearTimeout(setTimeOutId);}
        setTimeOutId 
= setTimeout(function(){
        
//这里做一些你想在Input控件的事件中处理事务

        autoComplate_GetData();
        }
 , _outTime);
    }

    
    
function  autoComplate_DisposeEvent()
    
{
        
if (displayDiv)
        
{
            displayDiv.style.visibility 
= 'hidden';
            displayDiv.style.display 
= 'none';
            
            displayDiv.innerHTML 
= '';             //clear
            setTimeOutId = false;
        }

    }

    
    
function  autoComplate_DisplayDivShow()
    
{
        
if (displayDiv)
        
{
            displayDiv.style.visibility 
= 'visible';
            displayDiv.style.display 
= 'block';
            
            setTimeOutId 
= false;
        }

    }

    
    
function  autoComplate_DisplayDivOnRowOver()
    
{
        eval('
this.className = "autoComplateList-tr-over"');
    }

    
    
function  autoComplate_DisplayDivOnRowOut()
    
{
        eval('
this.className = "autoComplateList-tr"');
    }

    
    
function  autoComplate_DisplayDivOnClick()
    
{
        inputObj.value 
= eval('this.innerHTML');
        autoComplate_DisposeEvent();
        
        
        
//这里作一些当选中文本后想作的事,比如像google一样提交查询
    }

    
    
function  autoComplate_DisplayDivSetRowsEvent()
    
{
        
for (var index=0; index<displayDiv.childNodes.length -1 ;index++ )
        
{
            displayDiv.childNodes[index].onmouseover 
= autoComplate_DisplayDivOnRowOver;
            displayDiv.childNodes[index].onmouseout 
= autoComplate_DisplayDivOnRowOut;
            displayDiv.childNodes[index].onclick 
= autoComplate_DisplayDivOnClick;
        }

    }

    
    
function  autoComplate_GetData()
    
{
        
var ajax = new sack();
        ajax.requestFile 
= "search.aspx?type=4&name=name";        //请求地址
        ajax.onCompletion = function()
            
var entities =  ajax.responseXML.getElementsByTagName("entity");
            
if (entities.length <= 0return;
                
            displayDiv.innerHTML 
= '';
            
for(var index=0; index<entities.length; index++)
            
{
                displayDiv.innerHTML 
+= '<div class="autoComplateList-tr">+ entities[index].firstChild.getAttribute("value"+ '</div>';
            }

            
//Close Tag
            displayDiv.innerHTML += '<div class="" style="text-align:right;"><a href="#" onclick="autoComplate_DisposeEvent();">关闭</a></div>';
            
//Add Event
            autoComplate_DisplayDivSetRowsEvent();
            
//Show
            autoComplate_DisplayDivShow();
        }
;
        ajax.runAJAX();
    }
代码示例下载: http://files.cnblogs.com/sjett/autoComplate.rar

转载于:https://www.cnblogs.com/sjett/archive/2007/11/22/968026.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值