模拟一个类似百度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中的acos()方法使用详解
Jun 14 Javascript
原生js仿jquery animate动画效果
Jul 13 Javascript
jquery插件锦集【推荐】
Dec 16 Javascript
一句jQuery代码实现返回顶部效果(简单实用)
Dec 28 Javascript
利用n 升级工具升级Node.js版本及在mac环境下的坑
Feb 15 Javascript
微信小程序获取用户openId的实现方法
May 23 Javascript
layer弹出子iframe层父子页面传值的实现方法
Nov 22 Javascript
koa2实现登录注册功能的示例代码
Dec 03 Javascript
如何为你的JS项目添加智能提示与类型检查详解
Mar 12 Javascript
vue实现日历备忘录功能
Sep 24 Javascript
Vue 3.x+axios跨域方案的踩坑指南
Jul 04 Javascript
JavaScript面向对象中接口实现方法详解
Jul 24 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 论坛采集程序 模拟登陆,抓取页面 实现代码
2009/07/09 PHP
用来解析.htpasswd文件的PHP类
2012/09/05 PHP
Laravel如何实现适合Api的异常处理响应格式
2020/06/14 PHP
PHP的重载使用魔术方法代码实例详解
2021/02/26 PHP
动态加载图片路径 保持JavaScript控件的相对独立性
2010/09/06 Javascript
JavaScript高级程序设计 事件学习笔记
2011/09/10 Javascript
javascript下拉框选项单击事件的例子分享
2015/03/04 Javascript
Grunt入门教程(自动任务运行器)
2015/08/06 Javascript
JavaScript优化专题之Loading and Execution加载和运行
2016/01/20 Javascript
基于JSON格式数据的简单jQuery幻灯片插件(jquery-slider)
2016/08/10 Javascript
Javascript中浏览器窗口的基本操作总结
2016/08/18 Javascript
JS实现的几个常用算法
2016/11/12 Javascript
Javascript 数组去重的方法(四种)详解及实例代码
2016/11/24 Javascript
jQuery遍历节点方法汇总(推荐)
2017/05/13 jQuery
解决layer弹出层自适应页面大小的问题
2019/09/16 Javascript
layer 关闭指定弹出层的例子
2019/09/25 Javascript
Bootstrap简单实用的表单验证插件BootstrapValidator用法实例详解
2020/03/29 Javascript
windows下wxPython开发环境安装与配置方法
2014/06/28 Python
利用Anaconda简单安装scrapy框架的方法
2018/06/13 Python
Python 串口读写的实现方法
2019/06/12 Python
Python button选取本地图片并显示的实例
2019/06/13 Python
Python交互式图形编程的实现
2019/07/25 Python
python 将dicom图片转换成jpg图片的实例
2020/01/13 Python
Pytorch在dataloader类中设置shuffle的随机数种子方式
2020/01/14 Python
CSS3弹性伸缩布局之box布局
2016/07/12 HTML / CSS
开发人员所需要知道的HTML5性能分析面面观
2012/07/05 HTML / CSS
Html5嵌入钉钉的实现示例
2020/06/04 HTML / CSS
网络安全方面的面试题
2015/11/04 面试题
同学会邀请书大全
2014/01/12 职场文书
经理秘书求职自荐信范文
2014/03/23 职场文书
共产党员承诺书
2014/03/25 职场文书
纪念九一八事变演讲稿:牢记九一八,屈辱怎能忘
2014/09/14 职场文书
质量整改报告范文
2014/11/08 职场文书
通知的写法
2015/04/23 职场文书
警示教育片观后感
2015/06/17 职场文书
2019企业给员工的慰问信
2019/06/24 职场文书