Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/473.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何防止下拉列表在下拉列表中打开?_Javascript_Jquery_Asp.net_Drop Down Menu_Internet Explorer 7 - Fatal编程技术网

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.