模拟一个类似百度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插件化开发教程 (三)
Jan 27 Javascript
简介JavaScript中setUTCSeconds()方法的使用
Jun 12 Javascript
JS实现网页标题随机显示名人名言的方法
Nov 03 Javascript
实例详解JSON数据格式及json格式数据域字符串相互转换
Jan 07 Javascript
javascript学习指南之回调问题
Apr 23 Javascript
基于jQuery实现中英文切换导航条效果
Sep 18 Javascript
微信小程序开发教程-手势解锁实例
Jan 06 Javascript
微信小程序 支付简单实例及注意事项
Jan 06 Javascript
ES6新特性七:数组的扩充详解
Apr 21 Javascript
从零开始用electron手撸一个截屏工具的示例代码
Oct 10 Javascript
解决layer.open弹出框不能获取input框的值为空的问题
Sep 10 Javascript
Vue作用域插槽实现方法及作用详解
Jul 08 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服务器实现多session并发运行
2006/10/09 PHP
站长助手-网站web在线管理程序 v1.0 下载
2007/05/12 PHP
PHP求最大子序列和的算法实现
2011/06/24 PHP
PHP实现防盗链的方法分析
2017/07/25 PHP
Notify - 基于jquery的消息通知插件
2011/10/18 Javascript
js字符串转换成数字与数字转换成字符串的实现方法
2014/01/08 Javascript
推荐6款基于jQuery实现图片效果插件
2014/12/07 Javascript
如何解决easyui自定义标签 datagrid edit combobox 手动输入保存不上
2015/12/26 Javascript
解析微信JS-SDK配置授权,实现分享接口
2016/12/09 Javascript
AngularJS过滤器filter用法分析
2016/12/11 Javascript
Web开发使用Angular实现用户密码强度判别的方法
2017/09/27 Javascript
详解使用Nuxt.js快速搭建服务端渲染(SSR)应用
2019/03/13 Javascript
vue+iview分页组件的封装
2020/11/17 Vue.js
python获得两个数组交集、并集、差集的方法
2015/03/27 Python
Python使用cookielib模块操作cookie的实例教程
2016/07/12 Python
Python学习入门之区块链详解
2017/07/25 Python
Python SQLite3简介
2018/02/22 Python
python爬虫爬取淘宝商品信息(selenum+phontomjs)
2018/02/24 Python
解决pycharm 远程调试 上传 helpers 卡住的问题
2019/06/27 Python
tensorflow 保存模型和取出中间权重例子
2020/01/24 Python
浅析pip安装第三方库及pycharm中导入第三方库的问题
2020/03/10 Python
通过Python pyecharts输出保存图片代码实例
2020/11/25 Python
Sofmap官网:日本著名的数码电器专卖店
2017/05/19 全球购物
阿里巴巴美国:Alibaba美国
2019/11/24 全球购物
土木工程个人自荐信范文
2013/11/30 职场文书
新闻编辑专业毕业自荐书范文
2014/02/05 职场文书
《与象共舞》教学反思
2014/02/24 职场文书
手术室护士长竞聘书
2014/03/31 职场文书
自强之星事迹材料
2014/05/12 职场文书
小学捐书活动总结
2014/07/05 职场文书
2014教师评职称工作总结
2014/11/10 职场文书
反邪教观后感
2015/06/11 职场文书
小学运动会通讯稿
2015/07/18 职场文书
解决pytorch读取自制数据集出现过的问题
2021/05/31 Python
Python3中PyQt5简单实现文件打开及保存
2021/06/10 Python
redis的list数据类型相关命令介绍及使用
2022/01/18 Redis