javascript - 如何启用上下文菜单单击禁用的选择框

标签 javascript html

<分区>

我试图通过右键单击具有禁用属性的选择框来调用一个函数。但我无法调用函数。如果我删除禁用属性,则右键单击有效。

function hello() {
  alert('clicked');
  window.event.returnValue = false;
}
#testSelect {
  width: 100px;
  height: 20px;
}
<select id="testSelect" oncontextmenu="hello()" disabled="true">
    <option>1</option>
    <option>2</option>
    <option>3</option>
    <option>4</option>
</select>

我该怎么做?

最佳答案

您将无法在禁用 选择时触发任何鼠标事件。

但是 我添加了一个使用 div 来模拟效果的肮脏技巧:

在您的选择之后放置一个div,将它放在您选择的顶部,并给它一个display: none

添加 CSS 规则 .yourSelect:disabled + .yourDiv{display: block;} 将新的 div 放在您选择的顶部。

然后您将能够捕获该 div 上的鼠标事件。

演示:

$(document).on('contextmenu','.dirty-hack', e => {
  alert('clicked');
  return false;
});
body {
  margin: 0;
}

#testSelect {
  width: 100px;
  height: 20px;
}

div.dirty-hack {
  position: absolute;
  top: 0;
  display: none;
  width: 100px;
  height: 20px;
}

#testSelect:disabled+.dirty-hack {
  display: block;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<select id="testSelect" disabled="true">
    <option>1</option>
    <option>2</option>
    <option>3</option>
    <option>4</option>
</select>
<div class="dirty-hack"></div>

关于javascript - 如何启用上下文菜单单击禁用的选择框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49407078/

相关文章:

javascript - html 表单不响应点击 "enter"按钮

javascript - 数据表自定义行

jquery - CSS使div保持在顶部并使其他div在slideToggle时不动

javascript - 如何让我的文本输入从笔记本电脑图像屏幕的顶部开始

html - 如何根据内容设置元素的高度

javascript - 我如何告诉谷歌翻译不要翻译网站的某个部分?

javascript - 字符串比较 : something identical of JavaScript's localeCompare in PHP?

javascript - 使用 Javascript 调用对象中的函数

javascript - 将点击功能添加到动态创建的下拉列表中

javascript - FilteringSelect 的 onchange 不起作用