凑合凑合,还能用。 1. [代码] [JavaScript]代码 //键盘按下事件function getHospitalInfo(obj){ //获取下拉div var divs = obj.nextSibling.nextSibling; //获取列表集合 var div = $(divs).children(); if(event.keyCode == 3
1. [代码][JavaScript]代码
//键盘按下事件
function getHospitalInfo(obj){
//获取下拉div
var divs = obj.nextSibling.nextSibling;
//获取列表集合
var div = $(divs).children();
if(event.keyCode == 38){//上
changeCheck(div,1);
}else if(event.keyCode == 40){//下
changeCheck(div,-1);
}else if(event.keyCode == 13){//Enter
changeCheck(div,0);
}else if(event.keyCode > 40 || event.keyCode == 8 || event.keyCode == 32){//键盘按的是字母数字,退格,空格
//清空div的内容
$(divs).children().remove();
//判断文本框是否有值
if(obj.value){
setValue(divs,obj);
}else{
$(divs).hide();
$(obj).removeAttr("name");
}
}
}
//Obj代表的为当前的文本框,index代表的是当前按的是上 下 Enter
function changeCheck(obj,index){
var divs = obj.toArray();
var check = false;
var postion = 0;
for(var i = 0; i < divs.length; i++){
var div = divs[i];
if($(div).attr("class").toString() == "div_div border"){//当前列表中已经有选中状态的块
check = true;
postion = i;
}
}
if(check){ //代表当前列表有一个选中状态
if(index == 1){//上
$(divs[postion]).removeClass("border");
if(postion == 0){
$(divs[divs.length-1]).addClass("border");
}else{
$(divs[postion-1]).addClass("border");
}
}else if(index == -1){//下
$(divs[postion]).removeClass("border");
if(postion == divs.length-1){
$(divs[0]).addClass("border");
}else{
$(divs[postion+1]).addClass("border");
}
}else{//enter
$(divs[postion]).click();
}
}
}
//获得焦点
function onGetFous(obj){
//获取下拉div集合
var divs = obj.nextSibling.nextSibling;
//清空div的内容
$(divs).children().remove();
//判断文本框是否有值
if(obj.value){
setValue(divs,obj);
}else{
$(divs).hide();
$(obj).removeAttr("name");
}
}
//点击任意位置
$(document).click(function (){
$(".divs").children().remove();
$(".divs").hide();
});
//通过得到的值,模糊查询,并把结果填充
function setValue(divs,obj){
$.ajax({
url:'selectUrl',
type: "POST",
data:{"data":obj.value},
success:function(data){
if(data == "{}"){
//如果没有值,则隐藏下拉列表
$(divs).hide();
}else{
//格式化数据转换为json格式
var json = $.parseJSON(data);
for(var key in json){
//判断用户是不是全部自己输入的
if(json[key] == obj.value){
for(var key in json){
$(obj).attr("name",key);
$(divs).children().remove();
$(divs).hide();
}
}else{
//创建一个div
var div = document.createElement("div");
$(div).attr("name",key);
div.innerText = json[key];
//添加样式
$(div).addClass("div_div");
//添加悬浮事件
$(div).hover(
function(){
$(divs).children().removeClass("border");
$(this).addClass("border");
},
function(){
$(this).removeClass("border");
}
).click(function(){//添加单击事件
var text = this.innerText.substring(this.innerText.lastIndexOf(" ")+1);
$(obj).val(text);
$(obj).attr("name",$(this).attr("name"));
$(divs).children().remove();
$(divs).hide();
});
//把div追加到divs中
$(divs).append(div);
}//判断用户输入结束
}
//为第一个添加选中
$($(divs).children().first()).addClass("border");
}
//显示divs
divs.style.display = "block";
}
});
}
<html>
<head></head>
<body><input type="text" id="HAR_H1_NBR" class="div_l_40p" onkeyup="getHospitalInfo(this)" onfocus="onGetFous(this)"></body>
</html>
