Pregunta

Actualmente estoy tratando de configurar una página web para una computadora con pantalla táctil, y he notado que (con mis dedos gordos) que los eventos de clic son realmente difíciles de activar, ya que la superficie de mi dedo generalmente causa el cursor para moverme mientras hago clic en "

La solución que quiero usar es reenviar eventos onmousedown a onclick. ¿Cómo puedo hacer que esto funcione?

La mejor respuesta sería lo siguiente:

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

(pero, por supuesto, en condiciones de trabajo)

EDITAR: Mi ejemplo específico es para los botones de radio: cuando uno está marcado, los otros están desmarcados; No quiero tener que replicar este comportamiento en un evento personalizado cuando el navegador me lo da de forma gratuita.

NOTA: Después de editar y recibir comentarios, creo que tal vez podría estar en el camino equivocado ... tal vez no sea el "clic". funciona en un botón de radio que realmente hace la selección: nuevas sugerencias son bienvenidas ...

¿Fue útil?

Solución

Ok, después de sus ediciones se vuelve más claro: lo que desea hacer es simular que un usuario haga clic en el control cuando se active el evento mousedown .

Dos opciones:

  1. Puede activar el evento DOM - este tutorial sobre eventos DOM discute esto (consulte la sección Activación manual de eventos ); La activación de eventos de JavaScript cubre un terreno similar.
  2. Establecer onmouseout = " this.checked = true; " , es decir, hacer clic en el botón de radio " comprueba " / selecciona el botón de radio.

Otros consejos

¿Por qué no simplemente manejar el evento mousedown ?

Sé que no lo mencionaste en la pregunta, pero si estás usando jQuery, sería realmente muy fácil:

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

Quizás esto funcione para ti

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

Además, puede diseñar sus botones / campos de entrada para que sean un poco más grandes, para una mejor accesibilidad a través del puntero.

Es mejor tener una sola función para manejar ambos eventos, por ejemplo

var function = foo(e) {
   ...
};

<input onclick="foo();" onmousedown="foo();"/>

Mejor aún use JavaScript discreto, p. (si estabas usando 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);
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top