0

我目前正在尝试为触摸屏计算机设置网页,并且注意到(用我的胖手指)onclick 事件真的很难触发,因为我手指的表面区域通常会导致光标在我“点击”。

我想使用的解决方案是将 onmousedown 事件转发到 onclick。我怎样才能使这项工作?

最好的答案是这样的:

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

(但当然在工作条件下)

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

注意:经过编辑并收到反馈后,我认为也许我可能走错了路……也许不是单选按钮上的“单击”功能实际上进行了选择:欢迎提出新建议……

4

5 回答 5

1

为什么不直接处理mousedown事件?

于 2009-09-16T13:36:26.437 回答
1

我知道你没有在问题中提到它,但如果你碰巧使用 jQuery,那真的很容易:

$().live('mousedown', function() { this.click(); });
于 2009-09-16T13:46:09.907 回答
1

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

两种选择:

  1. 您可以触发 DOM 事件 -本教程关于 DOM 事件对此进行了讨论(请参阅手动触发事件部分);触发 Javascript 事件涵盖了类似的领域。
  2. 设置onmouseout="this.checked = true;",即单击单选按钮“检查”/选择单选按钮。
于 2009-09-17T09:16:55.823 回答
-1

也许这对你有用

document.getElementById("yourinput").onmousedown = function() {
   this.click();
}

此外,您可以将输入按钮/字段的样式设置得更大一点,以便通过指针更好地访问。

于 2009-09-16T13:39:42.867 回答
-1

最好有一个函数来处理这两个事件,例如

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);
于 2009-09-17T00:55:04.143 回答