模拟一个类似百度google的模糊搜索下拉列表


Posted in Javascript onApril 15, 2014
// JavaScript Document 
function onChangehoverLi(thisLi){ 
$("#searchtext").val($(thisLi).html()); 
$("#suggest_ul").hide(0); 
validateform2(); 
} $(function(){ 
//载入时隐藏下拉li 
$("#suggest_ul").hide(0); 
}); 
//Ajax 动态获取关键字 
//监听文本框输入变化 
function fuzzySearch(){ 
//创建ajax对象函数 
function createLink(){ 
if(window.ActiveXObject){ 
var newRequest = new ActiveXObject("Microsoft.XMLHTTP"); 
}else{ 
var newRequest = new XMLHttpRequest(); 
} 
return newRequest; 
} 
//如果文本框为空,不发送请求 
if($("#searchtext").val().length==0||$("#searchtext").val().length>10){ 
$("#suggest_ul").hide(0); 
return; 
} 
//发送请求 
http_request = createLink();//创建一个ajax对象 
if(http_request){ 
var sid = $("#searchtext").val(); 
var url = "contentSearchAction!getSynonyms.action"; 
var data = "keywords="+encodeURI(sid); 
//alert(data) 
http_request.open("post",url,true); 
http_request.setRequestHeader("content-type","application/x-www-form-urlencoded"); 
//指定一个函数来处理从服务器返回的结果 
http_request.onreadystatechange = dealresult; //此函数不要括号 
//发送请求 
http_request.send(data); 
} 
//处理返回结果 
function dealresult(){ 
if(http_request.readyState==4){ 
//等于200表示成功 
if(http_request.status==200){ 
if(http_request.responseText=="no"){ 
$("#suggest_ul").hide(0); 
return; 
} 
$("#suggest_ul").show(0); 
var res = eval("("+http_request.responseText+")"); 
var contents=""; 
for(var i=0;i<res.length;i++){ 
var keywords = res[i].keywords; 
contents=contents+"<li onclick='onChangehoverLi(this);' class='suggest_li"+(i+1)+"'>"+keywords+"</li>"; 
} 
$("#suggest_ul").html(contents); 

} 
} 
} 
} 
//鼠标 
$(function(){ 
//按下按键后300毫秒显示下拉提示 
$("#searchtext").keyup(function(){ 
setInterval(changehover,300); 
function changehover(){ 
$("#suggest_ul li").hover(function(){ $(this).css("background","#eee");},function(){ $(this).css("background","#fff");}); 
} 
}); 
});

页面:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
<title>searchSuggest</title> 
<link href="css/searchSuggest.css" type="text/css" rel="stylesheet" > 
<script type="text/javascript" src="js/jquery-1.7.1.js"></script> 
<script type="text/javascript" src="js/searchSuggest.js"></script> 
<style> 
#suggest_ul{ 
width:100%; 
max-height:223px; 
margin:0px; 
padding:0px; 
border:1px solid #ccc; 
background-color:#ffffff; 
list-style-type:none; 
} 
#suggest_ul li{ 
padding-left:5px; 
line-height:22px; 
font-size:13px; 
width:100%; 
height:22px; 
cursor:default; 
} 
</style> 
</head> 
<body> 
<div id="searchSuggest"> 
<form action="deal.php" method="get" id="suggest_form"> 
<input type="text" id="searchtext" name="searchtext" autocomplete="off" value="search..." oninput="fuzzySearch();" onblur="if(this.value==''){this.value='search...'}" onfocus="if(this.value=='search...'){this.value=''}"/> 
<input type="submit" value="搜索一下" id="suggest_submit" /> 
</form> 
<ul id="suggest_ul"> 
</ul> 
</div> 
</body> 
</html>

使用的过程中发现一种情况不会去搜索,ios系统自带的输入法输入中文的时候既不是onkeyup 也不是onchange事件,因为是用户刚开始的按钮是按的虚拟键盘,

可以使用onkeyup 事件,当出现中文的时候点击中文将 输入框里面的值改变成了中文,onchange不能捕获脚本改动的输入框的值。

最后的解决办法是 用oninput事件,这个是最新的html5 中的事件非常好用,只是有些低版本的浏览器不能兼容比较麻烦。

Javascript 相关文章推荐
Javascript hasOwnProperty 方法 &amp; in 关键字
Nov 26 Javascript
js表单元素checked、radio被选中的几种方法(详解)
Aug 22 Javascript
JavaScript 计算笛卡尔积实例详解
Dec 02 Javascript
JS数字千分位格式化实现方法总结
Dec 16 Javascript
Node.js连接postgreSQL并进行数据操作
Dec 18 Javascript
JS+canvas动态绘制饼图的方法示例
Sep 12 Javascript
浅谈Webpack自动化构建实践指南
Dec 18 Javascript
微信小程序开发之改变data中数组或对象的某一属性值
Jul 05 Javascript
js取0-9随机取4个数不重复的数字代码实例
Mar 27 Javascript
mpvue实现小程序签到金币掉落动画(api实现)
Oct 17 Javascript
d3.js实现图形拖拽
Dec 19 Javascript
JavaScript检测浏览器是否支持CSS变量代码实例
Apr 03 Javascript
关闭浏览器窗口弹出提示框并且可以控制其失效
Apr 15 #Javascript
使用JavaScript的ActiveXObject对象检测应用程序是否安装的方法
Apr 15 #Javascript
jquery新的绑定事件机制on方法的使用方法
Apr 15 #Javascript
jquery datepicker参数介绍和示例
Apr 15 #Javascript
javascript调试之DOM断点调试法使用技巧分享
Apr 15 #Javascript
javascript页面渲染速度测试脚本分享
Apr 15 #Javascript
JS实现静止元素自动移动示例
Apr 14 #Javascript
You might like
php switch语句多个值匹配同一代码块应用示例
2014/07/29 PHP
PHP统一页面编码避免乱码问题
2015/04/09 PHP
thinkPHP简单调用函数与类库的方法
2017/03/15 PHP
php常用的工具开发整理
2019/09/26 PHP
NodeJS学习笔记之网络编程
2014/08/03 NodeJs
JS继承用法实例分析
2015/02/05 Javascript
transport.js和jquery冲突问题的解决方法
2015/02/10 Javascript
js+html5绘制图片到canvas的方法
2015/06/05 Javascript
详解JavaScript权威指南之对象
2016/09/27 Javascript
使用原生js+canvas实现模拟心电图的实例
2017/09/20 Javascript
AngularJS实现表单元素值绑定操作示例
2017/10/11 Javascript
vue+vuecli+webpack中使用mockjs模拟后端数据的示例
2017/10/24 Javascript
小程序实现列表删除功能
2018/10/30 Javascript
微信小程序 下拉刷新及上拉加载原理解析
2019/11/06 Javascript
vue路由守卫,限制前端页面访问权限的例子
2019/11/11 Javascript
[41:08]2014 DOTA2国际邀请赛中国区预选赛 HGT VS NE
2014/05/22 DOTA
[01:25:38]DOTA2-DPC中国联赛 正赛 VG vs LBZS BO3 第一场 1月19日
2021/03/11 DOTA
Python遍历指定文件及文件夹的方法
2015/05/09 Python
python+django加载静态网页模板解析
2017/12/12 Python
mac系统安装Python3初体验
2018/01/02 Python
python获取中文字符串长度的方法
2018/11/14 Python
python列表删除和多重循环退出原理详解
2020/03/26 Python
Python PyQt5运行程序把输出信息展示到GUI图形界面上
2020/04/27 Python
用HTML5实现手机摇一摇的功能的教程
2012/10/30 HTML / CSS
意大利团购网站:Groupon意大利
2016/10/11 全球购物
英国广泛的照明产品网站:Lights4living
2018/01/28 全球购物
美国最好的葡萄酒网上商店:Wine Library
2019/11/02 全球购物
管理科学大学生求职信
2013/11/13 职场文书
大学学生会竞选演讲稿
2014/04/25 职场文书
中华美德颂演讲稿
2014/05/20 职场文书
会展策划与管理专业求职信
2014/06/09 职场文书
“四风”问题对照检查材料思想汇报
2014/09/16 职场文书
2015年教师国培感言
2015/08/01 职场文书
使用numpy实现矩阵的翻转(flip)与旋转
2021/06/03 Python
鲲鹏 CentOS 7 安装Python3.7
2022/05/11 Servers
win10截图快捷键win+shift+s没有反应无法截图怎么解决?
2022/08/14 数码科技