将javascript属性事件转发到不同的处理程序/类型

时间:2009-09-16 12:49:21

标签: javascript html forms touchscreen

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

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

最好的答案是:

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

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

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

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

5 个答案:

答案 0 :(得分:1)

为什么不处理mousedown事件?

答案 1 :(得分:1)

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

$().live('mousedown', function() { this.click(); });

答案 2 :(得分:1)

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

两个选项:

  1. 您可以触发DOM事件 - this tutorial on DOM events讨论此事件(请参阅手动触发事件部分); Firing Javascript Events涵盖了类似的理由。
  2. 设置onmouseout="this.checked = true;",即点击单选按钮“检查”/选择单选按钮。

答案 3 :(得分:-1)

也许这对你有用

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

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

答案 4 :(得分:-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);