jq实现搜索引擎的提示效果
(function ($) {
$.fn.Search = function (options) {
var defaults = {
inputid: "search",
divid: "searchDiv",
callback: function (pageindex) {
}
};
var i = 0;
var opts = $.extend(defaults, options);
$("#" + opts.inputid).keyup(function (e) {
e = e || window.event;
if (e.keyCode != 40 && e.keyCode != 38 && e.keyCode != 13) {
if ($("#" + opts.inputid).val() == "") {
$("#" + opts.divid).hide();
i = 0;
} else {
var value = $("#" + opts.inputid).val();
$.ajax({
//提交方式为Get
type: "get",
//访问的handler地址 参数d=" + new Date()是为了防止缓存是他每次访问的参数不同
url: "/Common/SearchInfo",
//设置提交的参数
data: { name: value },
//提交的方式是json提交
dataType: "json",
//如果成功则得到返回的结果然后用javascript库中的each方法遍历返回的json集合
success: function (data) {
//用each遍历json集合
if (data != null) {
var html = "";
$.each(data, function (i, dataitem) {
html = html + "<div style='cursor:hand' id='div" + i + "' onmouseover='getBlue(this)'onmouseout='getWhite(this)' onclick='document.getElementById(\"search\").value = this.innerText;$(\"#" + opts.divid + "\").hide();i=0;'style='font-size:16px;padding-top:5px;padding-buttom:5px;'><span style='font-weight:bold'>" + dataitem.ComName.substring(0, value.length) + "</span><span>" + dataitem.ComName.substring(value.length, dataitem.ComName.length) + "</span></div>";
});
$("#" + opts.divid).html(html);
$("#" + opts.divid).show();
} else {
$("#" + opts.divid).html("");
$("#" + opts.divid).hide();
}
},
//如果失败的话则弹出错误提醒
error: function (data) {
$("#" + opts.divid).hide();
i = 0;
}
});
}
}
if (e.keyCode == 40) {
var divs = $("#" + opts.divid).find("div");
if (divs.length == 1) {
divs[0].style.backgroundColor = "#e8e3e3";
return;
}
if ($.trim(i) == $.trim(divs.length)) {
divs[0].style.backgroundColor = "#e8e3e3";
$("#" + divs[0].id).siblings().css("backgroundColor", "white");
i = 0;
} else {
divs[i].style.backgroundColor = "#e8e3e3";
$("#" + divs[i].id).siblings().css("backgroundColor", "white");
}
i = i + 1;
}
if (e.keyCode == 38) {
var divs = $("#" + opts.divid).find("div");
if (i == 0) {
i = divs.length;
}
if (divs.length == 1) {
divs[0].style.backgroundColor = "#e8e3e3";
return;
}
if ($.trim(i) >= 0) {
divs[i - 1].style.backgroundColor = "#e8e3e3";
$("#" + divs[i - 1].id).siblings().css("backgroundColor", "white");
} else {
divs[i - 1].style.backgroundColor = "#e8e3e3";
$("#" + divs[i - 1].id).siblings().css("backgroundColor", "white");
i = 0;
}
i = i - 1;
}
if (e.keyCode == 13) {
var divs = $("#" + opts.divid).find("div");
for (var j = 0; j < divs.length; j++) {
if (divs[j].style.backgroundColor == "rgb(232, 227, 227)") {
var span = $("#" + divs[j].id).find("span");
var spanText = span[0].innerText + span[1].innerText;
$("#" + opts.inputid).val(spanText);
$("#" + opts.divid).hide();
i = 0;
}
}
}
});
};
})(jQuery);
function getBlue(obj) {
obj.style.backgroundColor = "#e8e3e3";
}
function getWhite(obj) {
obj.style.backgroundColor = "white";
}
jq实现搜索引擎的提示效果的更多相关文章
- 搜索引擎的提示效果完整的JavaScript代码
function divShow() { <%--判断输入的是否为空 如果为空则隐藏div 如果不为空则显示div --%> if ($("#tbxSearchKeywords& ...
- [锋利的JQ]-超链接提示效果
关键知识点: 1.事件对象:当事件一旦被触发,事件对象便会创立.事件对象只能作用于该事件的事件处理程序. 2.认识了mousemove事件了连续触发执行的特性. 代码: HTML: <div c ...
- 炫!一组单元素实现的 CSS 加载进度提示效果
之前的文章个大家分享过各种类型的加载效果(Loading Effects),这里再给大家奉献一组基于单个元素实现的 CSS 加载动画集合.这些加载效果都是基于一个 DIV 元素实现的,十分强悍. 温馨 ...
- Fort.js – 时尚、现代的表单填写进度提示效果
Fort.js 是一款用于时尚.现代的表单填写进度提示效果的 JavaScript 库,你需要做的就是添加表单,剩下的任务就交给 Fort.js 算法了,使用非常简单.提供了Default.Gradi ...
- SweetAlert – 替代 Alert 的漂亮的提示效果
Sweet Alert 是一个替代传统的 JavaScript Alert 的漂亮提示效果.SweetAlert 自动居中对齐在页面中央,不管您使用的是台式电脑,手机或平板电脑看起来效果都很棒.另外提 ...
- Ladda – 把加载提示效果集成到按钮中,提升用户体验
Ladda 是一组集成了加载提示的按钮,以弥合行动和反馈之间的时间间隔,提供更好的功能使用体验.主要用于在用户点击提交之后,向用户提供即时的反馈,让他们知道浏览器正在处用户提交的任务. 您可能感兴趣的 ...
- BootStrap入门教程 (四) :JQuery类库插件(模态窗口,滚动监控,标签效果,提示效果,“泡芙”效果,警告区域,折叠效果,旋转木马,输入提示)
上讲回顾:Bootstrap组件丰富同时具有良好可扩展性,能够很好地应用在生产环境.这些组件包括按钮(Button),导航(Navigation),缩略图( thumbnails),提醒(Alert) ...
- iOS开发——UI篇&提示效果
提示效果 关于iOS开发提示效果是一个很常见的技术,比如我们平时点击一个按钮,实现回馈,或者发送网络请求的时候! 技术点: 一:View UIAlertView UIActionSheet 二:控制器 ...
- js简单实现删除记录时的提示效果
删除记录时的提示效果,挺人性化的,实现的方法有很多,在本文为大家介绍下使用js是如何实现的 样式 复制代码代码如下: <style type="text/css"> ...
随机推荐
- 隐藏apache版本号 PHP版本号
httpd-default.conf ServerTokens Prod ServerSignature Off php.ini expose_php Off 重启服务器
- Operation not applicable
ClientDataSet.DataSetProvider1 Operation not applicable ClientDataSet1->Open(); 解决办法 1.update new ...
- Working with Other Node Types
[Working with Other Node Types] [Shape Nodes Draw Path-Based Shapes] The SKShapeNode class draws a s ...
- 什么是S-OFF,什么是S-ON,HBOOT命令,玩转Android
什么是S-OFF?S代表 Security Lock,是安全锁,保护锁的意思.S-OFF就是安全保护关,S-ON就是安全保护开.Secure Lock 就是安全锁.是硬件设计厂商用于保护固件不被刷写而 ...
- 最精简的IOCP封装
最精简的IOCP封装,DELPHI XE8直接编译通过.Winsock2.pas即使用DELPHI自带的,相信XE7也能编译,或者XE6,XE5也能. 单说Winsock2.pas,我见过无数种版本的 ...
- Linux下安装protobuf并实现简单的客户端服务器端通信
http://code.google.com/p/protobuf/downloads/list上可以下载Protobuf的源代码. 安装步骤如下所示: 1>tar -xzf protobuf- ...
- CodeForces 711C Coloring Trees (DP)
题意:给定n棵树,其中有一些已经涂了颜色,然后让你把没有涂色的树涂色使得所有的树能够恰好分成k组,让你求最少的花费是多少. 析:这是一个DP题,dp[i][j][k]表示第 i 棵树涂第 j 种颜色恰 ...
- 手把手教你玩转SOCKET模型之重叠I/O篇(下)
四. 实现重叠模型的步骤 作 了这么多的准备工作,费了这么多的笔墨,我们终于可以开始着手编码了.其实慢慢的你就会明白,要想透析重叠结构的内部原理也许是要费点功夫,但是只是学会 如何来使用它,却 ...
- 使用sql访问EXECL文件
--使用sql语句打开访问EXECL文件 --SQL Server 阻止了对组件 'Ad Hoc Distributed Queries' 的 STATEMENT'OpenRowset/OpenDat ...
- Linux下生成动态链接库是否必须使用 -fPIC 的问题[转]
在 Linux 下制作动态链接库,“标准” 的做法是编译成位置无关代码(Position Independent Code,PIC),然后链接成一个动态链接库.经常遇到的一个问题是 -fPIC 是不是 ...