Frage

Ich bin derzeit eine Webseite für einen Touch-Screen-Computer einzurichten versucht, und habe bemerkt, dass (mit meinen dicken Fingern), die Ereignisse Onclick wirklich schwer zu triggern, da die Oberfläche meines Fingers im Allgemeinen den Cursor verursacht zu bewegen, während ich „Klick“.

Die Lösung, die ich verwenden möchten, onmousedown Veranstaltungen Weiterleitung an Onclick. Wie kann ich diese Arbeit machen?

Die beste Antwort nach dem Vorbild der wäre:

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

(aber natürlich in einem betriebsbereiten Zustand)

EDIT: Mein spezielles Beispiel ist für Radio-Buttons - wenn man die anderen sind ungeprüft geprüft wird; Ich will nicht, dieses Verhalten in einem benutzerdefinierten Ereignisse haben, zu replizieren, wenn der Browser kostenlos es mir gibt.

Hinweis: Nachdem bearbeitet und erhielt Feedback, denke ich, dass ich vielleicht auf dem falschen Weg sein ... vielleicht ist es nicht die „Klick“ Funktion auf einem Radioknopf aus, um die Auswahl tatsächlich tut: neue Vorschläge willkommen ...

War es hilfreich?

Lösung

Ok, nachdem Ihre Änderungen wird es klarer - was wollen Sie tun, um einen Benutzer zu simulieren, um die Steuerung zu klicken, wenn das mousedown Ereignis ausgelöst wird.

Zwei Optionen:

  1. Sie können das DOM-Ereignis ausgelöst - diesem Tutorial auf DOM-Ereignisse diskutiert dies (siehe die manuell Ereignisse Brennen Abschnitt); Firing Javascript Events ähnlich Boden bedeckt.
  2. Set onmouseout="this.checked = true;", das heißt Sie auf den Radiobutton "checks" / wählt das Optionsfeld.

Andere Tipps

Warum nicht nur das mousedown Ereignis behandeln?

Ich weiß, dass Sie es nicht in der Frage erwähnt haben, aber wenn Sie werden mit jQuery passieren, wäre es wirklich einfach sein:

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

Vielleicht ist dies für Sie arbeitet

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

Zusätzlich Ihre Eingabetaste / Felder zu sein ein wenig größer, für eine bessere Zugänglichkeit über den Zeiger.

stylen Sie könnten

Es ist besser, eine einzige Funktion hat beiden Ereignisse zu behandeln, z.

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

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

Besser verwenden noch unaufdringlich JavaScript, z.B. (Wenn Sie wurden mit 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);
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top