JS仿百度自动下拉框模糊匹配提示


Posted in Javascript onJuly 25, 2016

JS仿百度自动下拉框模糊匹配提示

实际项目中,我们可以把数据获取改成ajax动态获取,在 getContent()中

<!DOCTYPE>
<html>
<head>
<title>js/jQuery实现类似百度搜索功能</title>
<meta name="Author" content="Michael">
<meta name="Keywords" content="js/jQuery实现类似百度搜索功能">
<meta name="Description" content="js/jQuery实现类似百度搜索功能,可用键盘控制">
<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
<script type="text/javascript" src="http://apps.bdimg.com/libs/jquery/2.1.4/jquery.min.js"></script>
<style type="text/css">
#container {
position: absolute;
left: 50%;
top: 40%;
}
#content {
float: left;
position: relative;
right: 50%;
}
input {
border: 0;
width: 288px;
height: 30px;
font-size: 16px;
padding: 0 5px;
line-height: 30px;
}
.item {
padding: 3px 5px;
cursor: pointer;
}
.addbg {
background: #87A900;
}
.first {
border: solid #87A900 2px;
width: 300px;
}
#append {
border: solid #87A900 2px;
border-top: 0;
display: none;
}
</style>
</head>
<body>
<div id="container">
<div id="content">
<div class="first">
<input id="kw" onKeyup="getContent(this);" />
</div>
<div id="append"></div>
</div>
</div>
<script type="text/javascript">
var data = [
"你好,我是Michael",
"你是谁",
"你最好啦",
"你最珍贵",
"你是我最好的朋友",
"你画我猜",
"你是笨蛋",
"你懂得",
"你为我着迷",
"你是我的眼"
];
$(document).ready(function() {
$(document).keydown(function(e) {
e = e || window.event;
var keycode = e.which ? e.which : e.keyCode;
if (keycode == 38) {
if (jQuery.trim($("#append").html()) == "") {
return;
}
movePrev();
} else if (keycode == 40) {
if (jQuery.trim($("#append").html()) == "") {
return;
}
$("#kw").blur();
if ($(".item").hasClass("addbg")) {
moveNext();
} else {
$(".item").removeClass('addbg').eq(0).addClass('addbg');
}
} else if (keycode == 13) {
dojob();
}
});
var movePrev = function() {
$("#kw").blur();
var index = $(".addbg").prevAll().length;
if (index == 0) {
$(".item").removeClass('addbg').eq($(".item").length - 1).addClass('addbg');
} else {
$(".item").removeClass('addbg').eq(index - 1).addClass('addbg');
}
}
var moveNext = function() {
var index = $(".addbg").prevAll().length;
if (index == $(".item").length - 1) {
$(".item").removeClass('addbg').eq(0).addClass('addbg');
} else {
$(".item").removeClass('addbg').eq(index + 1).addClass('addbg');
}
}
var dojob = function() {
$("#kw").blur();
var value = $(".addbg").text();
$("#kw").val(value);
$("#append").hide().html("");
}
});
function getContent(obj) {
var kw = jQuery.trim($(obj).val());
if (kw == "") {
$("#append").hide().html("");
return false;
}
var html = "";
for (var i = 0; i < data.length; i++) {
if (data[i].indexOf(kw) >= 0) {
html = html + "<div class='item' onmouseenter='getFocus(this)' onClick='getCon(this);'>" + data[i] + "</div>"
}
}
if (html != "") {
$("#append").show().html(html);
} else {
$("#append").hide().html("");
}
}
function getFocus(obj) {
$(".item").removeClass("addbg");
$(obj).addClass("addbg");
}
function getCon(obj) {
var value = $(obj).text();
$("#kw").val(value);
$("#append").hide().html("");
}
</script>
</body>
</html>

以上所述是小编给大家介绍的JS仿百度自动下拉框模糊匹配提示,希望对大家有所帮助,如果大家有任何疑问欢迎给我留言,小编会及时回复大家的!

Javascript 相关文章推荐
基于jquery点击自以外任意处,关闭自身的代码
Feb 10 Javascript
jquery获取自定义属性(attr和prop)实例介绍
Apr 21 Javascript
ExtJS DOM元素操作经验分享
Aug 28 Javascript
Jquery仿淘宝京东多条件筛选可自行结合ajax加载示例
Aug 28 Javascript
Javascript玩转继承(一)
May 08 Javascript
js编写三级联动简单案例
Dec 21 Javascript
利用jQuery+localStorage实现一个简易的计时器示例代码
Dec 25 jQuery
vue组件编写之todolist组件实例详解
Jan 22 Javascript
微信小程序Getuserinfo解决方案图解
Aug 24 Javascript
简述vue状态管理模式之vuex
Aug 29 Javascript
浅谈关于vue中scss公用的解决方案
Dec 02 Javascript
Javascript中Microtask和Macrotask鲜为人知的知识点
Apr 02 Javascript
JS本地刷新返回上一页代码
Jul 25 #Javascript
jQuery layui常用方法介绍
Jul 25 #Javascript
Bootstrap Validator 表单验证
Jul 25 #Javascript
javascript封装addLoadEvent实现页面同时加载执行多个函数的方法
Jul 25 #Javascript
最简单纯JavaScript实现Tab标签页切换的方式(推荐)
Jul 25 #Javascript
基于CSS3和jQuery实现跟随鼠标方位的Hover特效
Jul 25 #Javascript
javascript insertAfter()定义与用法示例
Jul 25 #Javascript
You might like
在Mac OS上搭建Nginx+PHP+MySQL开发环境的教程
2015/12/21 PHP
laravel7学习之无限级分类的最新实现方法
2020/09/30 PHP
document.documentElement &amp;&amp; document.documentElement.scrollTop
2007/12/01 Javascript
客户端js性能优化小技巧整理
2013/11/05 Javascript
jquery form 隐藏的input 选择
2014/04/29 Javascript
JavaScript实现大数的运算
2014/11/24 Javascript
jquery插件jquery.nicescroll实现图片无滚动条左右拖拽的方法
2015/08/10 Javascript
基于jQuery实现的QQ表情插件
2015/08/25 Javascript
JavaScript动态数量的文件上传控件
2016/11/18 Javascript
BootstrapTable请求数据时设置超时(timeout)的方法
2017/01/22 Javascript
jQuery插件zTree实现清空选中第一个节点所有子节点的方法
2017/03/08 Javascript
slideToggle+slideup实现手机端折叠菜单效果
2017/05/25 Javascript
vue2.0父子组件间传递数据的方法
2018/08/16 Javascript
vue中子组件的methods中获取到props中的值方法
2018/08/27 Javascript
浅谈vux之x-input使用以及源码解读
2018/11/04 Javascript
js实现贪吃蛇小游戏
2019/10/29 Javascript
JS插入排序简单理解与实现方法分析
2019/11/25 Javascript
JS数组reduce()方法原理及使用技巧解析
2020/07/14 Javascript
浅谈实现在线预览PDF的几种解决办法
2020/08/10 Javascript
video.js添加自定义组件的方法
2020/12/09 Javascript
vue+vant 上传图片需要注意的地方
2021/01/03 Vue.js
[05:08]DOTA2-DPC中国联赛3月6日Recap集锦
2021/03/11 DOTA
Python实现基于PIL和tesseract的验证码识别功能示例
2018/07/11 Python
python微信公众号之关注公众号自动回复
2018/10/25 Python
如何基于python测量代码运行时间
2019/12/25 Python
纽约JewelryAffairs珠宝店:精细金银时尚首饰
2017/02/05 全球购物
美国最大的网络男装服装品牌:Bonobos
2017/05/25 全球购物
会计实习期自我鉴定
2013/10/06 职场文书
追悼会上的答谢词
2014/01/10 职场文书
违纪检讨书2000字
2014/02/08 职场文书
化工实习心得体会
2014/09/09 职场文书
机关干部个人对照检查材料思想汇报
2014/09/28 职场文书
自查自纠工作总结
2014/10/15 职场文书
学习雷锋精神活动总结
2015/02/06 职场文书
vue 给数组添加新对象并赋值
2022/04/20 Vue.js
apache虚拟主机配置的三种方式(小结)
2022/07/23 Servers