先看看代码吧,基本效果已经实现。
但是在Opera中当输入值后,按方向键控制选择,向下没得效果,向上可以。。。。
其它浏览器没得问题。。
$("#" + inputDataTextId).keyup(function(event){
});
这个方法好像向下的时候根本就不执行。。。
请高人指点下。。。。
body {
background-color: #F8F8FF;
}
#main {
position: absolute;
top: 100px;
left: 36%;
width: 400px;
background-color: #F5FFFA;
}
#input_text {
position: absolute;
font-size: 18px;
width: 390px;
height: 23px;
border: 1px solid #C9C9C9;
}
#input_div {
position: absolute;
width: 392px;
top: 26px;
border: 1px solid #454545;
display: none;
overflow: hidden;
}
#input_div {
text-decoration: none;
background-color: #FFFAFA;
}
#input_div div {
vertical-align: middle;
padding: 4px;
font-weight: bold;
color: #000000;
width: 100%;
}
.div_item_select {
background-color: #E0EEEE;
height: 22px;
font-size: 18px;
}
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Demo</title>
<script type="text/javascript" src="jquery-1.4.2.js">
</script>
</head>
<body>
<div id="main">
<input type="text" id="input_text">
<div id="input_div">
</div>
</div>
</body>
</html>
$(document).ready(function(){
/**
* 当鼠标 放上去 的效果 CSS Class名称
*/
var divItemSelect = 'div_item_select';
/**
* 展示数据 的DIV
*/
var showDataDivId = "input_div";
/**
* 输入框
*/
var inputDataTextId = "input_text";
/**
* 点击
* @param {Object} event
*/
$(document).click(function(event){
if (event.target.id != inputDataTextId) {
$("#" + showDataDivId).slideUp(200);
}
});
/**
* 鼠标在文本框输入值
* @param {Object} event
*/
$("#" + inputDataTextId).keyup(function(event){
if (event.keyCode == 40) {//down
chageSelect(1);
}
else if (event.keyCode == 38) {//up
chageSelect(-1);
}
else if (event.keyCode == 13) {//回车
item_click($("#" + showDataDivId + " div[class='" + divItemSelect + "']"));
}
else if (this.value.length > 0) {
//..ajax请求, 返回的时候 调用。。
//以下为 Ajax 返回的时候 调用的数据
var len = 10 - this.value.length;
if (len < 1) {
len = 5;
}
var str = "";
for (var i = 0; i < len; i++) {
var index = i;//此处 为展示顺序,必须要
//此处拼接服务器返回的数据。。。。
str += "<div>" + this.value + index + "</div>" + //展示的数据
"<input type='hidden' name='d_index' value='" +
index +
"' />" //位置,勿动
//+ "<input type='hidden' name='d_value' value='" +index +"' />"; //用于放置数据
}
//展示层,并展示数据
$("#" + showDataDivId).html(str).slideDown(200);
//注册事件
registerInputEvent();
}
else {
$("#" + showDataDivId).slideUp(200);
}
});
//.blur(function(){$("#" + showDataDivId).slideUp(200);});
/**
* 键盘操作 向上 或向上
* @param {Object} opt 向上 -1 向下 1
*/
function chageSelect(opt){
if ($("#input_div").css('display') == 'block') {
var obj = $("#input_div div[class='" + divItemSelect + "']");
if (obj.html() == null) {//当前还未选中。
if (opt == 1) {
$("#" + showDataDivId + " div:first").addClass(divItemSelect);
}
else {
$("#" + showDataDivId + " div:last").addClass(divItemSelect);
}
}
else {
var curr = parseInt($("#" + showDataDivId + " div[class='" + divItemSelect + "'] ~ input[name='d_index']").val()) + opt;
var divCount = $("#" + showDataDivId + " div").size();
$("#" + showDataDivId + " div[class='" + divItemSelect + "']").removeClass(divItemSelect);
$("#" + showDataDivId + " div:eq(" + ((curr < 0) ? (divCount - 1) : ((curr == divCount) ? 0 : curr) + ")")).addClass(divItemSelect);
}
}
}
/**
* 注册事件
*/
function registerInputEvent(){
$("#" + showDataDivId + " div").click(function(){
item_click($(this));
}).mouseover(function(){
$("#" + showDataDivId + " div[class='" + divItemSelect + "']").removeClass(divItemSelect);
$(this).addClass(divItemSelect);
}).mouseout(function(){
$(this).removeClass(divItemSelect);
});
}
/**
* 点击每一项的操作
* @param {Object} obj
*/
function item_click(obj){
if (obj.html() == null) {//如果是按回车键。。。
//暂时不做操作。。。。
}
else { //如果是点击 选择
$("#" + inputDataTextId).val($(obj).html()).focus();
//取得 你要放置的数据 d_value 为 变量名。。。
//var currValue = $("#" + showDataDivId + " div[class='" + divItemSelect + "'] ~ input[name='d_value']").val();
}
$("#" + showDataDivId).hide();
//跳转。。。。。等 操作。
}
});
- 大小: 5.2 KB
分享到:
相关推荐
HTML+CSS+JavaScript+jQuery+Bootstrap等前端框架实现的前端案例.zip
JavaScript+jQuery程序设计(慕课版)的详细源程序,能够给学习的同学提供案例。
JavaScript+jQuery网页特效设计实例源码
作品实现了以下的js功能: (1) 使用正则表达式验证注册页面信息 (2) 网站首页动态显示系统时间 (3) 动态改变导航菜单样式 (4) 制作图片轮显效果 (5) 制作随光标滚动的广告图片效果 (6) 制作光标移到某...
jquery.more.js,js下拉加载、jq下拉加载php+mysql+jquery.more.js完整一套流程。非常好用
js+jquery组图片切换效果
JavaScript+jQuery+css+html的帮助文档 中文API 每个UI工程师不可或缺的好帮手
html+jquery+CSS实现最简单的右侧导航栏效果
javascript+jQuery基础教程 各种精讲课程多套书籍 参考多多
js+jquery帮助文档API chm格式的。
jQuery-1.8.1.js+jQuery-1.8.1-min.js+jQuery api 1.8 中文版.chm
JavaScript+jQuery网页特效设计实例教程
精通JavaScript+Jquery视频教程(共16讲)(15)
自己编写的一个Html的Table 利用html,css实现了页面的表示,利用javaScript和jQuery实现了页面的动画效果。
web前端 html+css+js+jquery 文化嘉定官网模仿
事先声明下(代码非常杂乱,并未写成插件,方法都是非常low的方法),这个是模拟bootstrap的插件select-picker插件完成的多选下拉树,类似picker中,这个也可以输入进行查询,因为项目特殊需要,里面都是直接id命名...
生日祝福(HTML+CSS+JavaScript+jQuery),强化4种语言练习,所有内容均属于dom操作。对于大学生学习前端技术帮助极大。
iscroll5+jquery+afui上拉加载下拉刷新
包括html、css、javascript、jquery的API和将近1000种js常用特效、全部是chm文档,方便阅读和学习