test
来源:互联网 发布:美国剪羊毛原理知乎 编辑:程序博客网 时间:2024/04/28 12:18
//表示当前高亮的节点
var heightLightIndex = -1;
var timeoutId;
$(document).ready(function()
{
var wordInput = $("#word");
var wordInputOffset = wordInput.offset();
//自动补全框最开始应该隐藏起来
$("#auto").hide().css("border","1px black solid")
.css("position","absolute")
.css("left",wordInputOffset.left + "px")
.css("top",wordInputOffset.top + wordInput.height() + 5 + "px")
.width(wordInput.width() + 4);
//给文本框添加键盘按下并弹起的事件
wordInput.keyup(function()
{
//如果输入的内容不为空,刚将数据发送给服务器
if(wordInput.val() == "" )
{
//当框隐藏时,高亮框的索引值应为-1,表示没有高亮显示的
heightLightIndex = -1;
$("#auto").hide();
return;
}
var keyCode = event.keyCode;
//如果输入的是向上38向下40键刚将选中的内容赋值给输入框
if(wordInput.val() != "" && (keyCode == 38 || keyCode == 40))
{
//alert("sdfdsf");
if(keyCode == 38)
{
//向上
var autoNodes = $("#auto").children("div");
if(heightLightIndex != -1)
{
autoNodes.eq(heightLightIndex).css("background-color","white");
}
//改变要高亮显示的节点的索引值
if(heightLightIndex == 0)
{
//如果修改索引值以后index变为-1,则将索引值指向最后一个元素
heightLightIndex = autoNodes.length - 1;
}
else
{
heightLightIndex--;
}
autoNodes.eq(heightLightIndex).css("background-color","red");
}
if(keyCode == 40)
{
//向下
var autoNodes = $("#auto").children("div");
if(heightLightIndex != -1)
{
autoNodes.eq(heightLightIndex).css("background-color","white");
}
//改变要高亮显示的节点的索引值
if(heightLightIndex == autoNodes.length - 1)
{
//如果修改索引值以后index变为-1,则将索引值指向最后一个元素
heightLightIndex = 0;
}
else
{
heightLightIndex++;
}
autoNodes.eq(heightLightIndex).css("background-color","red");
}
return;
}
else if(keyCode == 13)
{
//如果按下的是回车键
$("#auto").hide();
//下拉框有高亮内容
if(heightLightIndex != -1)
{
var comText = $("#auto").children("div").eq(heightLightIndex).text();
heightLightIndex = -1;
$("#word").val(comText);
}
else
{
//下拉框没有高亮内容
alert("数据[" + $("#word").val() + "]正在搜索,请稍后.....");
//让文本框失去焦点
$("#word").get(0).blur();
}
return;
}
//1.首先获取文本框中的内容
var wordText = $("#word").val();
//对上次未完成的延时操作进行取消
clearTimeout(timeoutId);
//将和服务器进行操作延迟500毫秒
timeoutId = setTimeout(function(){
//2.将文本框的内容发送给服务器
$.post("AutoComplete",{word:wordText},function(data){
//将dom对象输入成JQuery对象
var jqueryObj = $(data);
//找到所有的word节点
var wordNodes = jqueryObj.find("word");
//遍历所有的word节点,取出所有的单词内容,然后将单词内容添加到弹出框中
var autoNode = $("#auto");
//需要清空原来的内容
autoNode .html("");
wordNodes.each(function(i){
//获取单词的内容
var wordNode = $(this);
//新建div节点,将单词内容加入到新建的节点中
//将新建的节点加入到弹出框的节点中
var newDivNode = $("<div>").attr("id",i);
newDivNode.html(wordNode.text()).appendTo(autoNode);
//增加鼠标进入事件,高亮节点
newDivNode.mouseover(function(){
//将原来的节点取消高亮显示
if(heightLightIndex != -1)
{
$("#auto").children("div").eq(heightLightIndex).css("background-color","white");
}
//记录新的高亮显示节点索引
heightLightIndex = $(this).attr("id");
//鼠标进入的节点高亮
$(this).css("background-color","red");
});
//增加鼠标移出事件,取消高亮显示节点
newDivNode.mouseout(function(){
//取消当前节点的高亮显示
$(this).css("background-color","white");
});
//鼠标点击当前节点,可以进行补全
newDivNode.click(function(){
//var comText = $("#auto").children("div").eq(heightLightIndex).text();
heightLightIndex = -1;
//$("#word").val(wordNode.text());
$("#word").val($(this).text());
$("#auto").hide();
});
});
//让弹出框进行显示(当服务器端有数据返回的时候)
if(wordNodes.length > 0)
{
$("#auto").show();
}
else
{
//当框隐藏时,高亮框的索引值应为-1,表示没有高亮显示的
heightLightIndex = -1;
$("#auto").hide();
}
},"xml");
});},500);
//给搜索按钮添加单击事件
$("input[type='button']").click(function(){
alert("数据[" + $("#word").val() + "]正在搜索,请稍后.....");
});
});
- test
- test
- test
- test
- test
- test
- test
- Test
- test
- Test
- test
- test
- test
- test
- test
- test
- test
- Test
- Linux 0.11汇编的语法问题
- 策略设计模式
- 命运在我手
- 用Digester实现xml转换成bean
- javascript动态添加事件方法详解 || Javascript attachEvent传递参数的办法
- test
- POJ 3264 线段树
- Android核心模块及相关技术
- AsyncTask
- RedHat linux配置yum本地资源
- 实话
- java线程面试题1
- 世上从不缺少美 只需发现美的眼睛
- java线程面试题2