Javascript 如何防止下拉列表在下拉列表中打开?
我有一个自定义表,我想将其用作Javascript 如何防止下拉列表在下拉列表中打开?,javascript,jquery,asp.net,drop-down-menu,internet-explorer-7,Javascript,Jquery,Asp.net,Drop Down Menu,Internet Explorer 7,我有一个自定义表,我想将其用作DropDownList的下拉部分 理想情况下,当用户单击下拉列表时,它应该显示自定义表,而不是通常的下拉列表。我认为在不禁用DropDownList控件的情况下,可以很容易地防止下拉列表打开,但事实似乎并非如此 有没有一种简单的方法可以防止在不禁用的情况下打开DropDownList 编辑:这必须适用于嵌入式IE 7 web浏览器,并且e.preventDefault()在该浏览器版本中不起作用您是否考虑过使用a进行此操作,您可以将任何需要的内容放在下拉部分-例
DropDownList
的下拉部分
理想情况下,当用户单击下拉列表时,它应该显示自定义表,而不是通常的下拉列表。我认为在不禁用DropDownList控件的情况下,可以很容易地防止下拉列表打开,但事实似乎并非如此
有没有一种简单的方法可以防止在不禁用的情况下打开DropDownList
编辑:这必须适用于嵌入式IE 7 web浏览器,并且e.preventDefault()
在该浏览器版本中不起作用您是否考虑过使用a进行此操作,您可以将任何需要的内容放在下拉部分-例如,您的表将其放在一个div中,如下所示:
<div id="dllDiv" style="width:200px;height:200px;">
< asp:DropDownList ID="DropDownList1" runat="server" style="z-index:-1000px;pointer-events:none;">
< /asp:DropDownList>
</div>
(document).ready(function() {
$("#dllDiv").click(function() {
alert('adasd');
});
});
在mousedown
事件(演示:)中使用jQuery的event.preventDefault
,可以阻止dropdownlist显示
另请参见此相关问题:您可以这样做:
<div id="dllDiv" style="width:200px;height:200px;">
< asp:DropDownList ID="DropDownList1" runat="server" style="z-index:-1000px;pointer-events:none;">
< /asp:DropDownList>
</div>
(document).ready(function() {
$("#dllDiv").click(function() {
alert('adasd');
});
});
基本上,我在下拉列表上放置了一个不可见的div来阻止它,您可以通过单击masking div来处理单击
编辑:我已经更新了这个
试验
我不得不使用一种破解方法,因为IE似乎无法正确渲染没有背景颜色设置的div,所以无法正常工作。这在我的IE7中起作用
如果你想让它在所有浏览器中都工作,你需要添加chrome/firefox不透明CSS,或者使用一些IE专用CSS来应用背景色
我认为由于它在上面的定位方式,不透明度实际上不能正常工作,因为元素的位置是绝对的,无论它以哪种方式工作。我最初将其设置为不透明度1,但这听起来不对,因为我们希望它不可见,因此我将其更改为0。如果您要自定义下拉列表内容的格式,您也可以自定义下拉列表本身。只需使用一个文本框来显示当前选定的项目,并使用一个带有向下箭头图标的按钮来显示下拉列表即可。@mellamokb我希望有一种更简单的方法。。。我还需要分别跟踪SelectedValue
和DisplayValue
,因为实际选择的值是UTC日期,而显示日期是基于用户的时区。您是否尝试了onclick
事件并使用preventDefault
或return false
?@mellamokb Yes,这些都不能阻止下拉菜单打开。我尝试了单击
和鼠标向下
事件。在Chrome中的鼠标向下
上,preventDefault对我有效至少:。在这个相关问题上可以找到:不幸的是,我需要它在嵌入式IE 7 web浏览器中工作,但事实并非如此。在IE7上,“event.preventDefault()”命令将抛出一个javascript错误,可能是因为在您的情况下,“event”属性指的是除select的mousedown之外的另一个事件。但是由于这个javascript错误,下拉菜单打开被阻止了。可能是一个很好的“副作用”。本打算使用此功能,但如果您在无调试模式下双击它(使用ie10模拟ie8),它将打开下拉菜单。确实非常聪明!:)+1.