2022年jQuery实现仿百度搜索时的下拉列表 .pdf





《2022年jQuery实现仿百度搜索时的下拉列表 .pdf》由会员分享,可在线阅读,更多相关《2022年jQuery实现仿百度搜索时的下拉列表 .pdf(6页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、jQuery 实现仿百度搜索框中的下拉列表效果值得收藏当我们使用百度或是谷歌进行搜索时,只要输入一个字母就可以产生一个下拉列表,并且可以通过键盘上下键来控制列表项的选择。最近在项目中也碰到了类似的情况,在文本框中输入某个字母就可以出现一个下拉列表,展现从数据库里搜索过来的结果。AD:先说一下我的实现思路吧,当用户在文本框中输入时,可以利用 ajax 方式将文本框内内容传给后台的某个页面,在那个页面中经过处理后将产生的结果(这里的结果是一个字符串数组)再获取过来在前台呈现。有了思路后就开始考虑怎么去具体实现吧。首先要使用ajax 的话,就想到可以使用jQuery提供的$.post()方法,这个方
2、法可带4 个参数,分别是:url,请求的页面URL地址;data(可选),作为 HTTP消息的实体内容发送给服务器;callback(可选),载入成功后的回调函数,自动将请求结果和状态传递给该方法;type(可选),服务器端返回的数据格式,可以是:xml、html、script、json 等。好,现在对$.post()方法有了一定的了解,现在就可以考虑这个方法该怎么来写了。在我的项目中,请求的 URL地址是 Url.Action(GetTags)(由于是 ASP.NET MVC 架构,地址是由Routing 配置产生的,这个转义到前台就是一个普通的URL地址),需要传送的是ID 为 newTa
3、g的文本框中的值,所以第二个参数为pinyins:$(#newTag).val(),这里的 pinyins是由后台定义的。第三个参数callback是处理请求成功后要做的事,暂且命名为pinyinCallback,第四个参数设为json,即数据格式为一个JSON对象。这样的话,这个ajax 请求可以写为:1.$.post(Url.Action(GetTags),pinyins:$(#newTag).val(),pinyinCallback,json);但是如果用户每输入一个字母就立即往服务器传的的话,服务器的承载就会过大,于是考虑可以将每次请求延迟一秒发送,于是发送请求的方法可以这样定义:1.
4、function pinyinOption()名师资料总结-精品资料欢迎下载-名师精心整理-第 1 页,共 6 页 -2.var t =setTimeout(function()3.$.post(Url.Action(GetTags),pinyins:$(#newTag).val(),pinyinCallback,json);4.,1000);5.6.现在要考虑的就是这个方法在何时调用。既然是以用户输入结果来查询的,那么可以考虑jQuery 的 keyup事件,可以在文本框(id为 newTag)的 keyup 事件触发后就调用之前定义的方法。但是又考虑到这个功能中可以通过键盘中上下键来控制列
5、表中的选项,所以这个keyup 事件可以这样来定义:1.$(#newTag).keyup(function(e)2.if(e.keyCode!=40&e.keyCode!=38)3.currentTxt=$(#newTag).val();4.pinyinOption();5.6.).focus(function()7.this.select();8.);其中 keyCode 值 38、40 分别代表上键和下键。currentTxt记录的是当前文本框的内容。当请求成功后的回调函数pinyinCallback该做什么呢?这个回调函数该做的应该有这些事,首先要把请求来的数据在前台呈现出来,这样就需要
6、创建一些新的DOM 元素来装这些内容。就不废话了,直接上代码吧:Html 代码:1.2.新标签 Html.TextBox(newTag,null,new style=border:1px solid#555;height:20px;,autocomplete=off)3.ViewBag.Info4.1.var$resultDiv=$();2.var$resultUl=$();3.var$resultLi=;4.var currentTxt;5.6.function pinyinCallback(data)7.$(#resultDiv).show();8.$resultUl.html();名师资
7、料总结-精品资料欢迎下载-名师精心整理-第 2 页,共 6 页 -9.for(var i =0;datai;i+)10.$resultLii=$();11.$resultLii.html(datai);12.$resultUl.append($resultLii);13.14.if($resultUl.html()=)15.$(#resultDiv).hide();16.17.$resultUl.appendTo($resultDiv);18.$resultDiv.appendTo($(#tagDiv);19.目前这个回调函数只是将请求回来的数据添加到创建的id 为 resultDiv的容器内
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 2022年jQuery实现仿百度搜索时的下拉列表 2022 jQuery 实现 百度 搜索 下拉 列表

限制150内