AJAX实现类似百度的搜索提示,自动补全和键盘、鼠标操作
<script type="text/javascript">
$(document).ready(function(){
var highlightIndex = -1;
$("#name").bind("keyup", function(event){
document.getElementById("auto").style.display='block';
var keyCode = event.keyCode;
$("#log").html(keyCode);
if(keyCode >= 65 && keyCode <=90 || keyCode == 8 || keyCode == 46 || keyCode==32){
//输入字母,退格或删除,显示最新的内容
var enteredName = $("#name").val();
if(typeof(enteredName) == undefined ||
enteredName==""){
return ;
}
$.ajax({
type: 'post',
url : '/ajax/ajax_building_listNames.action',
data:{'enteredName':enteredName},
success : function(data) {
$("#auto").html("");
if(data && data.length > 0){
var autoNode = $("#auto");
for(var i = 0; i < data.length; i++){
var newNode = $("<div>").attr("id", i);
newNode.html(data[i]).appendTo(autoNode);
newNode.mouseover(function(){
$(this).css("background-color","gray");
highlightIndex = $(this).attr("id");
//alert(highlightIndex);
});
newNode.mouseout(function(){
$(this).css("background-color","white");
});
newNode.click(function(){
$("#name").attr("value", $(this).text());
hightlightIndex = -1;
document.getElementById("auto").style.display='none'; });
};
}
}
});
}else if(keyCode == 13){
if(highlightIndex != -1){
var selectNode = $("#auto").children("div").eq(highlightIndex);
if(selectNode){
$("#name").attr("value", $(selectNode).text());
document.getElementById("auto").style.display='none';
}
} }else if(keyCode == 40 || keyCode == 38){
if(keyCode == 40){
//如果是向下
var autoNodes = $("#auto").children("div");
if(highlightIndex != -1){
//对当前选中的下一项的操作
var selectNode = autoNodes.eq(highlightIndex+1);
if(selectNode){
$("#name").attr("value", $(selectNode).text());
//改变当前高亮的索引值,让当前选中高亮
selectNode.css("background-color","gray");
//当前被选中去掉高亮
var selectNode = autoNodes.eq(highlightIndex);
selectNode.css("background-color","white");
}
}else if(highlightIndex == -1){
var selectNode = autoNodes.eq(highlightIndex+1);
selectNode.css("background-color","gray");
}
highlightIndex++; if(highlightIndex==autoNodes.length){
//如果索引值等于提示框中内容的数组长度,则指向最头一个元素
autoNodes.eq(highlightIndex).css("background-color","white");
highlightIndex = 0;
autoNodes.eq(highlightIndex).css("background-color","gray");
$("#name").attr("value", autoNodes.eq(highlightIndex).text()); } }
if(keyCode == 38){
//如果是向上
var autoNodes = $("#auto").children("div");
if(highlightIndex != -1){
//对当前选中的上一项的操作
var selectNode = autoNodes.eq(highlightIndex-1);
if(selectNode){
$("#name").attr("value", $(selectNode).text());
//改变当前高亮的索引值,让当前选中高亮
selectNode.css("background-color","gray");
//当前被选中去掉高亮
var selectNode = autoNodes.eq(highlightIndex);
selectNode.css("background-color","white");
}
highlightIndex--;
}else if(highlightIndex == -1){
//如果索引值为-1,则指向最后一个元素
highlightIndex = autoNodes.length-1;
autoNodes.eq(highlightIndex).css("background-color","gray");
}
}
}
}); //隐藏自动补全框,并定义css属性
$("#auto").css("position","absolute")
.css("z-index", 9999)
.css("background-color", "white")
.css("border","1px black solid")
.css("top",$("#name").offset().top + $("#name").height() + 5 + "px")
.css("left",$("#name").offset().left + "px")
.width($("#name").width() + 2);
});
}
});
</script>
AJAX实现类似百度的搜索提示,自动补全和键盘、鼠标操作的更多相关文章
- 第三百六十八节,Python分布式爬虫打造搜索引擎Scrapy精讲—elasticsearch(搜索引擎)用Django实现搜索的自动补全功能
第三百六十八节,Python分布式爬虫打造搜索引擎Scrapy精讲—用Django实现搜索的自动补全功能 elasticsearch(搜索引擎)提供了自动补全接口 官方说明:https://www.e ...
- 四十七 Python分布式爬虫打造搜索引擎Scrapy精讲—elasticsearch(搜索引擎)用Django实现搜索的自动补全功能
elasticsearch(搜索引擎)提供了自动补全接口 官方说明:https://www.elastic.co/guide/en/elasticsearch/reference/current/se ...
- Vim使用YouCompleteMe达到类似IDE的代码提示、补全,以及其他实用设置
接触Linux有两年了,vim还是只会简单的操作.最近实在受不了sublime的代码提示,决定花点时间来配置下vim.本文讲自己认为方便的vim配置,称不上完美,只讲究简单实用. 使用 ctags 主 ...
- angular-ui-bootstrap typeahead 智能提示 自动补全 获取焦点不触发问题的解决
项目中有一处使用了angular-ui-bootstrap中的typeahead来实现输入框智能提示语自动化补全的功能,存在一个bug, 即输入文字后,当再次点击文本框,其获取焦点后并不会触发智能提示 ...
- jQuery搜索框自动补全功能插件实现-autocomplete.js
最近用nodeclub实现股票的输入关键字自动补全股票信息进行搜索功能,原先用jQuery-ui,结果jQuery-ui库太大,所以考虑用其他插件,最终选择使用autocomplete.js,控件简单 ...
- 【Eclipse】eclipse自动提示+自动补全
解决代码的自动提示问题: 1.打开 Eclipse -> Window -> Perferences 2.找到Java 下的 Editor 下的 Content Assist , 右边出现 ...
- 【学习】eclipse自动提示+自动补全
解决代码的自动提示问题: 1.打开 Eclipse -> Window -> Perferences 2.找到Java 下的 Editor 下的 Content Assist , 右边出现 ...
- 使用Bootstrap typeahead插件实现搜索框自动补全的配置参数。
示例代码: <input type="text" id="addr"/> <input type="text" hidde ...
- 使用jqueryUI和corethink实现的类似百度的搜索提示
代码:http://download.csdn.net/detail/u012995856/9676845 效果: 目录: 这里是以corethink模块的形式,只需要安装上访问 index.php? ...
随机推荐
- BZOJ 1651: [Usaco2006 Feb]Stall Reservations 专用牛棚
题目 1651: [Usaco2006 Feb]Stall Reservations 专用牛棚 Time Limit: 10 Sec Memory Limit: 64 MBSubmit: 553 ...
- 开机时进入 grub rescue>的解决方法
本机是centOS7和win8的双系统 之前在win上把一个空的磁盘空间释放了 可能造成了grub的一些问题 具体还没有研究过 开机后无法正常进入grub引导画面 而是跳出一串英文+ grub res ...
- Robotium之Android控件定位实践和建议(Appium/UIAutomator姊妹篇)
本人之前以前撰文描写叙述Appium和UIAutomator框架是怎样定位Android界面上的控件的. UIAutomator定位Android控件的方法实践和建议 Appium基于安卓的各种Fin ...
- Javascript 学习 笔记一
1.操作 HTML 元素 如需从 JavaScript 訪问某个 HTML 元素,您能够使用 document.getElementById(id) 方法. 请使用 &qu ...
- AFNetWorking 提交 NSArray 类型参数 取不到值的解决办法
在使用AFNWorking 提交参数的时候, 其中包含NSArray类型的参数, 但是后台可以接收到普通int, string 类型的参数,就是接收不到array类型的, google后发现原来AFN ...
- CentOS 6.5上安装MySQL-Cluster
参考博文: CentOS 6.2下MySQL Cluster 7.2 配置数据库集群 CentOS 6.5上安装MySQL-Cluster 7.3.4过程笔记--下一步学习 MySQL Cluster ...
- PHP给图片加文字水印
<?php /*给图片加文字水印的方法*/ $dst_path = 'http://f4.topitme.com/4/15/11/1166351597fe111154l.jpg'; $dst = ...
- Ural 1450 求最长路 SPFA
题意就是求S点到T点的有向无环图中的最长路. 用SPFA可以解决. 一开始一直RE的原因 QAQ 竟然是在开Edge 邻接表的时候开小了 改了一下4Y #include <stdio.h> ...
- 【转】opencv-在图像上显示字符(不包括中文)
原文参见:http://blog.csdn.net/ycc892009/article/details/6516528 1 #include <cv.h> #include <hig ...
- Regionals 2012, Asia - Jakarta 解题报告
啥都不会做了.. 做题慢死 A.Grandpa's Walk 签到题. 直接DFS就行. 注意先判断这个点可以作为一个路径的起点不. 然后再DFS. 否则处理起来略麻烦 #include <io ...