模拟一个类似百度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 相关文章推荐
yepnope.js 异步加载资源文件
Sep 08 Javascript
JS实现遮罩层效果的简单实例
Nov 12 Javascript
基于JavaScript实现百叶窗动画效果不只单纯flas可以实现
Feb 29 Javascript
js实现图片淡入淡出切换简易效果
Aug 22 Javascript
详解vue中computed 和 watch的异同
Jun 30 Javascript
JS FormData上传文件的设置方法
Jul 05 Javascript
手写Node静态资源服务器的实现方法
Mar 20 Javascript
vue组件中使用props传递数据的实例详解
Apr 08 Javascript
JavaScript RegExp 对象用法详解
Sep 24 Javascript
微信小程序登录时如何获取input框中的内容
Dec 04 Javascript
谈谈我在vue-cli3中用预渲染遇到的坑
Apr 22 Javascript
JS 设计模式之:工厂模式定义与实现方法浅析
May 06 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指定函数参数默认值示例代码
2013/12/04 PHP
php将金额数字转化为中文大写
2015/07/09 PHP
浅谈PHPANALYSIS提取关键字
2019/03/08 PHP
IE中直接运行显示当前网页中的图片 推荐
2006/08/31 Javascript
LBS blog sql注射漏洞[All version]-官方已有补丁
2007/08/26 Javascript
JavaScript中链式调用之研习
2011/04/07 Javascript
JS Replace()的高级使用方法介绍
2013/06/29 Javascript
基于jquery实现的定时显示与隐藏div广告的实现代码
2013/08/22 Javascript
如何解决easyui自定义标签 datagrid edit combobox 手动输入保存不上
2015/12/26 Javascript
javascript自动切换焦点控制效果完整实例
2016/02/02 Javascript
jQuery短信验证倒计时功能实现方法详解
2016/05/25 Javascript
JS实现物体带缓冲的间歇运动效果示例
2016/12/22 Javascript
webpack配置文件和常用配置项介绍
2017/04/28 Javascript
微信小程序三级联动地址选择器的实例代码
2017/07/12 Javascript
ReactNative中使用Redux架构总结
2017/12/15 Javascript
Java设计中的Builder模式的介绍
2018/03/22 Javascript
jQuery实现的简单手风琴效果示例
2018/08/29 jQuery
Vue2 添加数据可视化支持的方法步骤
2019/01/02 Javascript
微信浏览器下拉黑边解决方案 wScroollFix
2020/01/21 Javascript
nodejs如何在package.json中设置多条启动命令
2020/03/16 NodeJs
js实现表单项的全选、反选及删除操作示例
2020/06/05 Javascript
Vue 数据绑定的原理分析
2020/11/16 Javascript
修改NPM全局模式的默认安装路径的方法
2020/12/15 Javascript
[15:39]教你分分钟做大人:龙骑士
2014/10/30 DOTA
python3+PyQt5实现拖放功能
2018/04/24 Python
详解python持久化文件读写
2019/04/06 Python
Python中PyQt5/PySide2的按钮控件使用实例
2019/08/17 Python
基于HTML5新特性Mutation Observer实现编辑器的撤销和回退操作
2016/01/11 HTML / CSS
MCM英国官网:奢侈皮具制品
2017/04/18 全球购物
护理职业应聘自荐书
2013/09/29 职场文书
幼儿园的门卫岗位职责
2014/04/10 职场文书
护士感人事迹
2014/05/01 职场文书
2015元旦联欢晚会结束语
2014/12/14 职场文书
2015年扶贫帮困工作总结
2015/05/20 职场文书
2016年小学“公民道德宣传日”活动总结
2016/04/01 职场文书
Jmerte 分布式压测及分布式压测配置
2022/04/30 Java/Android