我正在尝试为触摸屏电脑设置一个网页,并注意到(用我的胖手指)onclick事件真的很难触发,因为我手指的表面区域通常会导致光标我在“点击”时移动。

我想要使用的解决方案是将onmousedown事件转发给onclick。我怎样才能做到这一点?

最好的答案是:

<input type="radio" onmousedown="this.onclick()"/>

(但当然是在工作状态下)

编辑:我的具体例子是单选按钮 - 当选中一个时,其他按钮未经检查;当浏览器免费向我提供时,我不想在自定义事件中复制此行为。

注意:编辑并收到反馈后,我想也许我可能走错了轨道......也许这不是“点击”。在实际进行选择的单选按钮上运行:欢迎新建议......

有帮助吗?

解决方案

好的,在您编辑之后它变得更加清晰 - 您想要做的是模拟用户在 mousedown 事件被触发时单击控件。

两个选项:

  1. 您可以触发DOM事件 - 关于DOM事件的本教程讨论这个(参见手动触发事件部分); 解雇Javascript活动涵盖类似的理由。
  2. 设置 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);
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top