Warum löst eine Beschriftung in einer Eingabe ein Klickereignis aus?

8

Wenn ich ein input innerhalb eines label habe, warum löst jedes Wort im Satz ein Klickereignis aus?

Hier ist ein jsFiddle für ein Beispiel. Egal welches Wort Sie im ersten Satz anklicken, das Ereignis wird ausgelöst.

Ich habe etwas CSS in input hinzugefügt, damit Sie sehen können, dass es egal ist, wo im ersten Label Sie sich befinden, es ist, als würden Sie über die Eingabe schweben. Ich habe auch ein zweites Label hinzugefügt, indem ich ein a -Tag innerhalb von label benutzt habe, was so funktioniert, als würde input funktionieren (das click -Ereignis wird nicht ausgelöst, wenn du auf ein Wort im Label klickst).

%Vor%

Meine zwei Fragen sind:

  1. Gibt es eine Möglichkeit, input in label so zu verwenden, dass label das Klickereignis nicht auslöst?
  2. Warum klickt das Click-Ereignis in meinem Beispiel auf jedes Wort im Satz?
Brian 08.10.2013, 13:35
quelle

1 Antwort

14

Dies ist Teil der HTML-Spezifikation - label -Elemente erhöhen den Trefferbereich der verwandten input . Sie können den Klick selbst und preventDefault() verarbeiten, jedoch wird die Schaltflächenoberfläche beim Klicken nicht angehalten.

Beispielgeige

Alternativ können Sie die label -Elemente mit dem entsprechenden Stil in span ändern, damit sie sich genauso verhalten, obwohl Sie die Benutzererfahrung beeinträchtigen.

    
Rory McCrossan 08.10.2013, 13:38
quelle

Tags und Links