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基础知识filter()和find()实例说明
Jul 06 Javascript
基于jquery实现图片广告轮换效果代码
Jul 07 Javascript
javaScript arguments 对象使用介绍
Oct 18 Javascript
JavaScript实现强制重定向至HTTPS页面
Jun 10 Javascript
jQuery编写textarea输入字数限制代码
Mar 23 jQuery
加载 vue 远程代码的组件实例详解
Nov 20 Javascript
解决vue中修改export default中脚本报一大堆错的问题
Aug 27 Javascript
如何利用ES6进行Promise封装总结
Feb 11 Javascript
使用layui监听器监听select下拉框,事件绑定不成功的解决方法
Sep 28 Javascript
Vue.js实现可编辑的表格
Dec 11 Javascript
vue-socket.io跨域问题有效解决方法
Feb 11 Javascript
简单了解前端渐进式框架VUE
Jul 20 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
example1.php
2006/10/09 PHP
php连接oracle数据库及查询数据的方法
2014/12/29 PHP
基于php的微信公众平台开发入门实例
2015/04/15 PHP
Smarty模板配置实例简析
2019/07/20 PHP
RR vs IO BO3 第一场2.13
2021/03/10 DOTA
js每次Title显示不同的名言
2008/09/25 Javascript
javascript 获取模态窗口的滚动位置代码
2013/08/06 Javascript
javascript中验证大写字母、数字和中文
2014/01/15 Javascript
为jQuery添加Webkit的触摸的方法分享
2014/02/02 Javascript
使用jQuery和Bootstrap实现多层、自适应模态窗口
2014/12/22 Javascript
JavaScript实现带箭头标识的多级下拉菜单效果
2015/08/27 Javascript
node.js-v6新版安装具体步骤(分享)
2017/09/06 Javascript
NodeJs form-data格式传输文件的方法
2017/12/13 NodeJs
Angular @HostBinding()和@HostListener()用法
2018/03/05 Javascript
Vue filter介绍及详细使用
2018/04/04 Javascript
Vue render深入开发讲解
2018/04/13 Javascript
js判断密码强度的方法
2020/03/18 Javascript
手把手教你实现 Promise的使用方法
2020/09/02 Javascript
python下如何让web元素的生成更简单的分析
2008/07/17 Python
利用python批量给云主机配置安全组的方法教程
2017/06/21 Python
win8下python3.4安装和环境配置图文教程
2018/07/31 Python
python实现简单日期工具类
2019/04/24 Python
Python-Seaborn热图绘制的实现方法
2019/07/15 Python
Python 变量的创建过程详解
2019/09/02 Python
详解Python3迁移接口变化采坑记
2019/10/11 Python
python plt可视化——打印特殊符号和制作图例代码
2020/04/17 Python
Pycharm安装并配置jupyter notebook的实现
2020/05/18 Python
Python字符串split及rsplit方法原理详解
2020/06/29 Python
威盛公司软件C++工程师笔试题面试题
2012/07/16 面试题
暑期实践思想汇报
2014/01/06 职场文书
安全生产投入制度
2014/01/29 职场文书
《十六年前的回忆》教学反思
2014/02/14 职场文书
揭牌仪式主持词
2014/03/19 职场文书
新党章的学习心得体会
2014/11/07 职场文书
Filebeat 采集 Nginx 日志的方法
2021/03/31 Servers
Win11如何设置右键单击显示所有选项?Win11右键单击显示所有选项设置教程
2022/04/08 数码科技