将javascript属性事件转发到不同的处理程序/类型
-
07-07-2019 - |
题
我正在尝试为触摸屏电脑设置一个网页,并注意到(用我的胖手指)onclick事件真的很难触发,因为我手指的表面区域通常会导致光标我在“点击”时移动。
我想要使用的解决方案是将onmousedown事件转发给onclick。我怎样才能做到这一点?
最好的答案是:
<input type="radio" onmousedown="this.onclick()"/>
(但当然是在工作状态下)
编辑:我的具体例子是单选按钮 - 当选中一个时,其他按钮未经检查;当浏览器免费向我提供时,我不想在自定义事件中复制此行为。
注意:编辑并收到反馈后,我想也许我可能走错了轨道......也许这不是“点击”。在实际进行选择的单选按钮上运行:欢迎新建议......
解决方案
好的,在您编辑之后它变得更加清晰 - 您想要做的是模拟用户在 mousedown
事件被触发时单击控件。
两个选项:
- 您可以触发DOM事件 - 关于DOM事件的本教程讨论这个(参见手动触发事件部分); 解雇Javascript活动涵盖类似的理由。
- 设置
onmouseout =&quot; this.checked = true;&quot;
,即点击单选按钮“检查”/选择单选按钮。
醇>
其他提示
为什么不直接处理 mousedown
事件?
我知道你在问题中没有提到它,但如果你碰巧使用jQuery,那真的很容易:
$().live('mousedown', function() { this.click(); });
也许这对你有用
document.getElementById("yourinput").onmousedown = function() {
this.click();
}
此外,您可以将输入按钮/字段设置为更大,以便通过指针更好地访问。
最好有一个函数来处理这两个事件,例如
var function = foo(e) {
...
};
<input onclick="foo();" onmousedown="foo();"/>
最好还是使用不引人注目的JavaScript,例如(如果您使用的是YUI):
<input id="input-el"/>
var function = foo(e) {
...
};
var Event = YAHOO.util.Event;
Event.on('input-el', 'click', foo);
Event.on('input-el', 'mousedown', foo);
不隶属于 StackOverflow