jquery + ul 打造 Combobox 问题
时间:2009-03-27
来源:互联网
[code]
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>无标题文档</title>
<script type="text/javascript" src="jquery-1.2.6.min.js"></script>
<script type="text/javascript">
function JC_DropdownShow(oThis)
{
var $dropDown = $(oThis).siblings('ul');
$dropDown.width($(oThis).width());
$dropDown.css('top',$(oThis).height() + 5);
$dropDown.children('li').unbind();
$dropDown.children('li').click(
function(){
$(oThis).val($(this).attr('value'));
});
$dropDown.slideDown();
$(oThis).unbind('blur');
$(oThis).blur(function(){setTimeout(function(){$dropDown.slideUp();},200)});
}
</script>
<style type="text/css">
<!--
.dropdown {
position: relative;
}
.dropdown ul {
margin: 0px;
padding: 0px;
position: absolute;
top: 30px;
border: 1px solid #666;
list-style-type: none;
width: 150px;
z-index: 100;
left: 0px;
background-color: #FFF;
display: none;
overflow:auto;
height:150px;
}
.dropdown ul li {
font-size: 12px;
color: #333;
text-decoration: none;
padding: 3px;
cursor:pointer;
margin: 0px;
}
.dropdown ul li:hover {
background-color: #FFC;
}
-->
</style>
</head>
<body>
<div class="dropdown">
<input name="textfield" type="text" class="TextBox" id="textfield" onfocus="JC_DropdownShow(this);" />
<ul>
<li value="5">随笔</li>
<li value="7">网页设计</li>
<li value="10">用户体验</li>
<li value="5">随笔</li>
<li value="5">随笔</li>
<li value="7">网页设计</li>
<li value="10">用户体验</li>
<li value="5">随笔</li>
<li value="5">随笔</li>
<li value="7">网页设计</li>
<li value="10">用户体验</li>
<li value="5">随笔</li>
</ul>
</div>
</body>
</html>
[/code]
文本框获取焦点后,下拉层弹出,本想让文本框失去焦点后下拉层隐藏,这个没有问题,问题是,滚动下拉层的滚动条时,就已经触发了失去焦点事件,层已经消失了。火狐没有问题,IE可就问题大了。。6、7、8 全部失去焦点了。。。我可不希望这样子……求救啊。。。
已附上DEMO代码。。
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>无标题文档</title>
<script type="text/javascript" src="jquery-1.2.6.min.js"></script>
<script type="text/javascript">
function JC_DropdownShow(oThis)
{
var $dropDown = $(oThis).siblings('ul');
$dropDown.width($(oThis).width());
$dropDown.css('top',$(oThis).height() + 5);
$dropDown.children('li').unbind();
$dropDown.children('li').click(
function(){
$(oThis).val($(this).attr('value'));
});
$dropDown.slideDown();
$(oThis).unbind('blur');
$(oThis).blur(function(){setTimeout(function(){$dropDown.slideUp();},200)});
}
</script>
<style type="text/css">
<!--
.dropdown {
position: relative;
}
.dropdown ul {
margin: 0px;
padding: 0px;
position: absolute;
top: 30px;
border: 1px solid #666;
list-style-type: none;
width: 150px;
z-index: 100;
left: 0px;
background-color: #FFF;
display: none;
overflow:auto;
height:150px;
}
.dropdown ul li {
font-size: 12px;
color: #333;
text-decoration: none;
padding: 3px;
cursor:pointer;
margin: 0px;
}
.dropdown ul li:hover {
background-color: #FFC;
}
-->
</style>
</head>
<body>
<div class="dropdown">
<input name="textfield" type="text" class="TextBox" id="textfield" onfocus="JC_DropdownShow(this);" />
<ul>
<li value="5">随笔</li>
<li value="7">网页设计</li>
<li value="10">用户体验</li>
<li value="5">随笔</li>
<li value="5">随笔</li>
<li value="7">网页设计</li>
<li value="10">用户体验</li>
<li value="5">随笔</li>
<li value="5">随笔</li>
<li value="7">网页设计</li>
<li value="10">用户体验</li>
<li value="5">随笔</li>
</ul>
</div>
</body>
</html>
[/code]
文本框获取焦点后,下拉层弹出,本想让文本框失去焦点后下拉层隐藏,这个没有问题,问题是,滚动下拉层的滚动条时,就已经触发了失去焦点事件,层已经消失了。火狐没有问题,IE可就问题大了。。6、7、8 全部失去焦点了。。。我可不希望这样子……求救啊。。。
已附上DEMO代码。。
作者: wxmaple 发布时间: 2009-03-27
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28