Question

J'essaie actuellement de configurer une page Web pour un ordinateur à écran tactile et j'ai remarqué (avec mes gros doigts) que les événements onclick sont vraiment difficiles à déclencher, car la surface de mon doigt provoque généralement le déplacement du curseur. pour vous déplacer pendant que je "clique sur".

La solution que je souhaite utiliser consiste à transférer des événements onmousedown vers onclick. Comment puis-je faire ce travail?

La meilleure réponse serait le suivant:

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

(mais bien sûr en état de marche)

EDIT: Mon exemple spécifique concerne les boutons radio. Lorsqu'une case est cochée, les autres ne sont pas cochées. Je ne souhaite pas avoir à reproduire ce comportement dans un événement personnalisé lorsque le navigateur me le donne gratuitement.

REMARQUE: les modifications apportées et les commentaires reçus, je pense que je suis peut-être sur la mauvaise voie ... ce n’est peut-être pas le "clic". fonction sur un bouton radio qui effectue la sélection: nouvelles suggestions bienvenues ...

Était-ce utile?

La solution

Ok, après vos modifications, cela devient plus clair. Ce que vous voulez faire est de simuler un utilisateur en cliquant sur le contrôle lorsque l'événement mousedown est déclenché.

Deux options:

  1. Vous pouvez déclencher l'événement DOM - ce didacticiel sur les événements DOM discute this (voir la section Evénements de déclenchement manuel ); Les événements d'activation de Javascript couvrent un terrain similaire.
  2. Définissez onmouseout = "this.checked = true;" ", c’est-à-dire que vous cliquez sur le bouton radio" vérifie "et sélectionne le bouton radio.

Autres conseils

Pourquoi ne pas simplement gérer l'événement mousedown ?

Je sais que vous ne l'avez pas mentionné dans la question, mais si vous utilisiez jQuery, ce serait vraiment très simple:

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

Peut-être que cela fonctionne pour vous

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

De plus, vous pouvez donner à vos boutons / champs de saisie une taille un peu plus grande, pour une meilleure accessibilité via le pointeur.

Il est préférable d'avoir une seule fonction pour gérer les deux événements, par exemple.

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

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

Mieux vaut toujours utiliser du code JavaScript non intrusif, par exemple. (si vous utilisiez 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);
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top