2016-11-14 5 views
1

Ich entwickle eine App für das iPad. (Es ist eine interne App, so ist es wirklich nur für das iPad und kein anderes Gerät.)Wie deaktiviert man den Klick auf Eingabe?

Auf Seite 1 der App habe ich einen Link zu Seite 2. Da ich aber im Standalone-Modus bleiben muss, ich habe das Standardklickverhalten auf den Link verhindert und stattdessen das Objekt location geändert. Seite 2 hat zufällig eine Texteingabe an den exakt gleichen Koordinaten wie der Link, auf den ich gerade geklickt habe. Obwohl ich das Klickverhalten auf der Verknüpfung deaktiviert habe, wird jetzt ein Klickereignis auf die Eingabe ausgelöst, an der sich die Verknüpfung befand. (Dies ist wegen der Verzögerung zwischen dem Abfeuern von touchend und dem Abfeuern von click.)

Ich habe versucht, sowohl event.preventDefault() und event.stopPropagation() auf Klicks der Eingabe, aber das Click-Ereignis noch Brennen und Öffnen der Tastatur des iPad.

Irgendwelche Ideen, wie man das stoppt? Vielen Dank.

bearbeiten: die Eingabe zu readonly oder disabled Einstellung ist keine Optionen, wie die Eingabe, wenn absichtlich ein Benutzer arbeiten muss es den Fokus gibt (und ich werde ein touchend Ereignis verwenden, um dies zu erreichen).

Das Problem ist, dass auf der ersten Seite ein Benutzer einen Link berührt und touchend und click Ereignisse auslöst. Die touchend ändert location.pathname, und das Ereignis click wird ausgelöst, nachdem die zweite Seite geladen wurde. Da die zweite Seite ein Textfeld an denselben Koordinaten hat, an denen das click-Ereignis ausgelöst wurde, wird event.target die input, und alle Versuche, dieses Ereignis zu deaktivieren, sind bisher fehlgeschlagen.

+0

Sie könnten einen Touchend-Ereignis-Listener innerhalb des Klick-Listeners festlegen, der den Standardwert verhindert und sich selbst entfernt. Auf diese Weise würde nur der erste Klick abgebrochen. –

+0

Danke - das war nicht die Lösung, sondern wies mich in die richtige Richtung. Ich habe 'event.stopPropagation' und' event.preventDefault' zu der Methode hinzugefügt, die 'location.pathname' auf' touchend' ändert und die das Klicken auf das Formular verhindert hat. –

Antwort

-1

Haben Sie versucht, den Eingang schreibgeschützt zu setzen?

+0

Ich möchte nicht, dass es nur gelesen wird. Es ist eine legitime Eingabe. Ich möchte, dass der Eingang den Fokus erhält und die Tastatur angezeigt wird, wenn ein Benutzer aktiv darauf klickt (und dazu werde ich später ein Berührungsereignis verwenden). Ich möchte jedoch nicht, dass der Eingang den Fokus erhält, weil die Eingabe an den gleichen Koordinaten erfolgt, die der Finger beim Berühren des Links zum Ändern von Ansichten hatte. –

+0

@DerekHenderson verschieben Sie diese Details auf die Frage. Es kann den Leuten helfen, besser zu verstehen, was Sie nachher haben. –

+0

Es ist der einzige Eingang? Denn wenn das der Fall ist, wird sofort der Fokus gesetzt und die Tastatur erscheint. (besser UX für mobile/Tablets) –

0

Überlagern Sie das Fenster mit einem Spinner, wenn Sie von Seite 1 zu Seite 2 wechseln. Eine Verzögerung von 250-300ms sollte mehr als ausreichend Zeit sein, damit der Benutzer seine Pfote vom Bildschirm nimmt.

+0

Wenn ich diese Option durchführe, setze ich die Eingaben lieber auf "readonly" und setze dann eine Zeitüberschreitung, um das Attribut "readonly" nach etwa 200 ms zu entfernen. Dies beantwortet jedoch nicht die Frage, wie das Klickereignis verhindert/deaktiviert/deaktiviert wird. –

Verwandte Themen