基于Jquery的输入前提示

本文介绍了一种前端实现的智能搜索提示功能,该功能可根据用户输入的关键字从预设词库中快速检索并显示搜索频率较高的建议项,提高了用户体验。文章提供了具体的HTML和JavaScript代码示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

为了增强用户体验,要求用户在关键字搜索时,根据以往搜索次数以及权重为用户提供智能提示。

如输入jquery,则可能提示jquery 1.4.1或jquery数组等。

虽然input标签有历史记录,能够提供以往的记录,但是这并不是我们想要的结果,我们需要的是根据用户输入的字母或者中文单词,对我们自身设置的词库进行检索,取出权重值最高或搜索频率高的几条记录。

为了提高搜索效率,我们可以使用缓存以及trie树,这些在此不做介绍,具体讲讲前台的实现方法。

html页面的主要代码:

<div style="width:250px; height:25px; line-height:25px;border:1px solid black;" >

<input type="text" size="35" id="keyword" pid="wordlist"  autocomplete="off"/>

<div id="sel" style="width:250px; height:auto; border:1px solid black;display:none;">

<table style="width:250px;">

<tr  pid="wordlist"><td>jquery</td></tr>

<tr pid="wordlist"><td>jquery 数组</td></tr>

            <tr pid="wordlist"><td>jquery 1.2.4</td></tr>

</table>

</div>

</div>

js代码:

<script type="text/javascript">

$(document).ready(function(){

var position=0;

var init_value;

                    $("#sel").find("tr").each(function(){

$(this).hover(

function(){

$(this).css("backgroud","blue");

},

function(){

$("this").css("backgroud","white");

}

);

$(this).click(function(){

var value=$(this).children("td").html();

$("#keyword").val(value);

$("#sel").hide();

});

});

$("#keyword").keydown(function(e){

var intkey=-1;

              if(window.event)

              {    

                   intkey=event.keyCode;

              }

              else

              {

                   intkey=e.which;     

              }   

              if(intkey==38)

              {    

                   moveObj("up");

              }

              else if(intkey==40)

              {

                  moveObj("down");

              }   


else if(intkey==13)

{

/* 处理表单提交事件 */

}


});

$("#keyword").keyup(function(e){

var intkey=-1;

if(window.event)

intkey=event.keyCode;

else

intkey=e.which;

if(intkey!=38&&intkey!=40)

{

if(init_value!=$(this).val())

                   {

                        init_value=$(this).val();

/* 通过AJAX技术对table进行初始化 */

$("#sel").show();

}

}

});

function moveObj(direction)

{   

var list=$("[pid='wordlist']"); 

var len=list.length;

switch(direction) 

              {

case "up":     

if(position==0)

position=len-1;

else

position=position-1;         

getTagValue(list,position);

break;

case "down":

if(position==len-1)

position=0;

else

position=position+1;

getTagValue(list,position);         

break;

default:

break;


}

}  


function getTagValue(list,position)

{

$(list).each(function(){

$(this).css("background","white");

});

if(position!=0)

{

$(list[position]).css("background","blue");

var value=$(list[position]).children("td").html();

$("#keyword").val(value);

}

else

$("#keyword").val(init_value);

}

});

</script>

转自同事罗俊的空间

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值