显示下拉菜单onmousedown而不失去onclick功能
Show drop down menu onmousedown without loosing onclick functionality
我试图得到一个下拉菜单的工作,因为大多数下拉菜单似乎工作,即只要按下鼠标按钮上的触发器下拉菜单显示。似乎相当容易与一些css和javascript,但事实证明是有点棘手。
明显的方法是:
<script>
function toggle(id) {
var el = document.getElementById(id);
el.style.display = (el.style.display === 'none') ? 'inline-block' : 'none';
}
</script>
<input type="button" value="click me" onmousedown="toggle('menu');"><div id="menu" style="display: none">Menu</div>
不幸的是,这不是完全正确的,因为现在不可能用tab键导航到触发器并按enter键来显示菜单。似乎这需要菜单显示与onclick
。但添加toggle
功能的onclick,以及显示菜单在onmousedown
,然后崩溃,当鼠标按钮被释放在onclick
。是否有一种方法可以阻止onclick
在onmousedown
之前开火?
希望这能很好地满足您的需求
<script>
var lastEvent = '';
function toggle(id, event) {
event = event || window.event;
if (lastEvent === 'mousedown' && event.type === 'click' && event.detail > 0){
lastEvent = event.type;
return;
}
var el = document.getElementById(id);
el.style.display = (el.style.display === 'none') ? 'inline-block' : 'none';
lastEvent = event.type;
}
</script>
<input type="submit" value="click me" onmousedown="toggle('menu', event);" onclick="toggle('menu', event);">
<div id="menu" style="display: none">Menu</div>
https://jsfiddle.net/safeer/rzg7sahb/18/尝试添加onclick事件并使用其名称提交表单
<input type="submit" value="click me" onmousedown="toggle('menu');" onclick="document.getElementById('form_name').submit();" >
这个方法怎么样?
<script>
function toggle(id) {
var el = document.getElementById(id);
el.style.display = (el.style.display == 'none') ? 'inline-block' : 'none';
}
function activate(e){
alert(e.id);
}
</script>
<div id="menuWrapper" onmousedown="toggle('menu');"onmouseup="toggle('menu');">
<div id="mainlink" >Click Here</div>
<div id="menu" onmouseup="activate(this);" style="display: none">Menu</div>
</div>
JS为菜单打开器设置div
还有另一种方法:
<script>
function toggle(id) {
var el = document.getElementById(id);
el.style.display = (el.style.display === 'none') ? 'inline-block' : 'none';
}
</script>
<input type="submit" value="click me" onmousedown="toggle('menu');" onkeypress="if (event.keyCode === 13) toggle('menu');" onkeyup="if (event.keyCode === 32) toggle('menu');">
<div id="menu" style="display: none">Menu</div>
模拟正常的键行为。尽管我不完全确定它是否能在所有操作系统上以正确的方式模拟所有这些
相关文章:
- 如何在执行此特定onclick事件时执行JavaScript函数
- Setting default onclick behavior for <img> tag in gene
- Javascript全局onclick监听器
- 如何调用“;链接_;在onclick事件上使用Javascript
- onclick函数需要双击,因为类分配延迟
- 如何使用jquery迭代具有相同属性的html元素并查找onclick事件
- 使用onclick绘制SVG路径
- 如何将数据从onclick按钮传递到变量
- 选择onclick事件jquery
- I'我设计了一个下拉菜单,onclick会出现,而on blur会消失
- Javascript游戏输入失去焦点
- jquery日期选择器失去了交互性
- 如何刷新列表框内容onclick或blur事件
- OnClick/Onhover Javascript/jquery
- 执行php函数的onclick事件的其他替代方案
- Javascript onclick函数会立即调用(而不是在单击时调用)
- 动态创建OnClick事件Javascript
- onclick风格的整个李不想要
- jquery Onclick函数带有导致双击的回调排序函数
- 显示下拉菜单onmousedown而不失去onclick功能