jquery AutoComplete

JS智能提示插件实现
本文介绍了一个使用JavaScript和jQuery实现的智能输入提示插件。该插件通过AJAX从后台获取数据,并根据用户输入实时更新建议列表。文章提供了完整的前端和后端代码示例。

JS

 

ContractedBlock.gifExpandedBlockStart.gifCode
    <script type="text/javascript" src="js/jquery.js"></script>
    <script type="text/javascript">
ExpandedBlockStart.gifContractedBlock.gif
var suggest={
    _obj:
"",
    oldvalue:
"",
ExpandedSubBlockStart.gifContractedSubBlock.gif    init:
function(obj){
    
this._obj=$("#"+obj);
ExpandedSubBlockStart.gifContractedSubBlock.gif    
this._obj.keydown(function(e){
    suggest.EventKeyDown(e.keyCode,obj);
    }
);
ExpandedSubBlockStart.gifContractedSubBlock.gif    
this._obj.keyup(function(e){
    suggest.GetData(obj,e.keyCode);
    }
);
ExpandedSubBlockStart.gifContractedSubBlock.gif    
this._obj.blur(function(e){
    suggest.HideDiv();
    }
);
    $(
"body").prepend("<div id='floor' class='floor'></div>");
    $(
"#floor").hide();
    
var objPos=this.getAbsolutePos(obj);
    $(
"#floor")[0].style.left=objPos.x+"px";
    $(
"#floor")[0].style.top=objPos.y+"px";
    }
,
ExpandedSubBlockStart.gifContractedSubBlock.gif    getAbsolutePos:
function(el){
    
var obj=document.getElementById(el);
    
var sl=obj["offsetLeft"];
    
var st=obj.offsetTop+obj.offsetHeight;
    
while(obj["offsetParent"])
ExpandedSubBlockStart.gifContractedSubBlock.gif    
{
        obj
=obj.offsetParent;
        sl
+=obj.offsetLeft;
        st
+=obj.offsetTop;
    }

ExpandedSubBlockStart.gifContractedSubBlock.gif    
var r={x:sl,y:st};
    
return r;
    }
,
    GetData:
function(obj,keycode)
ExpandedSubBlockStart.gifContractedSubBlock.gif    
{
    
if(keycode == 38 || keycode == 40 || keycode == 13 || keycode == 27 || keycode == 9return
    
if(this._obj.val()!=this.oldvalue &&this._obj.val()!="")
ExpandedSubBlockStart.gifContractedSubBlock.gif    
{
        
var data=_Default.Test(this._obj.val()).value;
        
if(data.length==0)
ExpandedSubBlockStart.gifContractedSubBlock.gif        
{
            
this.HideDiv();
            
return;
        }

        
var div="";
        
for(var i=0;i<data.length;i++)
ExpandedSubBlockStart.gifContractedSubBlock.gif        
{
            div
+="<div class=unselected  onmouseout = $(this).attr('class','unselected') onmouseover = suggest.MouseOver(this)>"+data[i]+"</div>";
        }

        $(
"#floor").html(div);
        $(
"#floor").width(this._obj.width());
        $(
"#floor").show();
        
this.oldvalue=this._obj.val();
     }

    }
,
ExpandedSubBlockStart.gifContractedSubBlock.gif    EventKeyDown:
function(keycode,sInput){
    currentInput 
= $("#"+sInput);
    
if(keycode == 13)
ExpandedSubBlockStart.gifContractedSubBlock.gif    
{        
        currentInput.focus();
        
this.hideText();
    }

    
if(keycode == 27this.hideText();    //esc
    selectedDiv = $("#floor>div[@class=selected]");
    
if(selectedDiv.text() != "")
ExpandedSubBlockStart.gifContractedSubBlock.gif    

        selectedDiv.attr(
"class","unselected");
        
if(keycode == 38//up
ExpandedSubBlockStart.gifContractedSubBlock.gif
        {
            
if(selectedDiv.prev().text() != "")
ExpandedSubBlockStart.gifContractedSubBlock.gif            
{
                selectedDiv.prev().attr(
"class","selected");
                currentInput.val(selectedDiv.prev().text());
            }

            
else
ExpandedSubBlockStart.gifContractedSubBlock.gif            
{
                $(
"#floor>div:last").attr("class","selected");
                currentInput.val($(
"#floor>div:last").text());                
            }

        }

        
else if(keycode == 40//down
ExpandedSubBlockStart.gifContractedSubBlock.gif
        {
            
if(selectedDiv.next().text() != "")
ExpandedSubBlockStart.gifContractedSubBlock.gif            
{
                selectedDiv.next().attr(
"class","selected");
                currentInput.val(selectedDiv.next().text());
            }

            
else
ExpandedSubBlockStart.gifContractedSubBlock.gif            
{
                $(
"#floor>div:first").attr("class","selected");
                currentInput.val($(
"#floor>div:first").text());                
            }

        }
            
    }

    
else if(keycode == 38)
ExpandedSubBlockStart.gifContractedSubBlock.gif    
{
        $(
"#floor>div:last").attr("class","selected");
        currentInput.val($(
"#floor>div:last").text());
    }

    
else if(keycode == 40)
ExpandedSubBlockStart.gifContractedSubBlock.gif    
{
        $(
"#floor>div:first").attr("class","selected");
        currentInput.val($(
"#floor>div:first").text());        
    }

    }
,
  HideDiv:
function()
ExpandedSubBlockStart.gifContractedSubBlock.gif    
{
    $(
"#floor").hide();
    $(
"#floor").html("");
    }
,
  MouseOver:
function(sDiv)
ExpandedSubBlockStart.gifContractedSubBlock.gif  
{
    $(
"#floor").children("div").attr("class","unselected");
    $(sDiv).attr(
"class","selected");
    
this._obj.val($(sDiv).text());
  }

}



    
</script>

CSS

 

ContractedBlock.gifExpandedBlockStart.gifCode
 1    <style type="text/css">
 2    .floor
 3ExpandedBlockStart.gifContractedBlock.gif    {}{
 4        position: absolute;
 5        background-color:white;
 6        border: 1px solid;
 7        overflow: auto;
 8    }

 9    .unselected
10ExpandedBlockStart.gifContractedBlock.gif    {}{
11        background-color: white;
12    }

13    .selected
14ExpandedBlockStart.gifContractedBlock.gif    {}{
15        background-color: dodgerblue;
16        color: white;
17    }
    
18    </style>

 

前台调用:suggest.init(文本框ID);

后台文件:

 

ContractedBlock.gifExpandedBlockStart.gifCode
 1    protected void Page_Load(object sender, EventArgs e)
 2ExpandedBlockStart.gifContractedBlock.gif    {
 3        AjaxPro.Utility.RegisterTypeForAjax(typeof(_Default));
 4    }

 5    [AjaxPro.AjaxMethod]
 6    public ArrayList Test(string searchValue)
 7ExpandedBlockStart.gifContractedBlock.gif    {
 8        ArrayList Values = new ArrayList();
 9        string str = "Select Id,Value from suggest where Value like '%"+searchValue+"%'";
10        SqlDataReader sdr = SqlHelper.ExecuteReader(str);
11        while (sdr.Read())
12ExpandedSubBlockStart.gifContractedSubBlock.gif        {
13            Values.Add(sdr["Value"].ToString());
14          
15        }

16        sdr.Dispose();
17        return Values;
18    }

转载于:https://www.cnblogs.com/nbgcqlk/archive/2008/10/26/1319854.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值