Seltsames Verhalten mit preventDefault () - und Optionsfeldern

8

Siehe dieses jsFiddle:

Ссылка

Offenbar verhindert die preventDefault () -Methode nicht, dass die angeklickte Optionsschaltfläche umgeschaltet wird (beachten Sie, dass die Meldung immer besagt, dass diese Optionsschaltfläche aktiviert wurde, unabhängig von ihrem vorherigen Status). Nachdem die onclick () -Methode beendet wurde, werden die Optionsfelder jedoch wieder in ihren ursprünglichen Zustand versetzt (außer beim allerersten Auswählen eines Optionsfelds).

Es scheint so, als ob preventDefault () nicht funktioniert, indem es tatsächlich verhindert, dass die Optionsschaltfläche überprüft wird, sondern indem es einfach die Schaltflächen in ihren vorherigen Zustand zurückversetzt. Kann jemand dieses Verhalten erklären? Ich würde gerne verhindern können, dass der Radiobutton überhaupt umgeschaltet wird - auf diese Weise konnte ich genau überprüfen, ob der Radiobutton innerhalb seiner onclick () -Methode aktiviert wurde. Irgendwelche Ideen?

    
Nathan Friend 12.04.2012, 05:47
quelle

1 Antwort

9

Tatsächlich wird ein mousedown -Event zuerst ausgelöst und Ihr Radiobutton aktiviert. Sie können dies leicht überprüfen, indem Sie die Maustaste auf einem Optionsfeld halten. Fast alle GUI-Elemente werden jedoch nur ausgeführt oder geändert, wenn sowohl mousedown als auch mouseup ausgelöst und erfolgreich ausgeführt werden.

Siehe dieses Beispiel ( Demo ):

%Vor%

Wie Sie sehen können, wird das mousedown zuerst ausgelöst und es wird 'Dieses Optionsfeld wurde in mousedown nicht aktiviert' angezeigt. Das Ereignis click wird verhindert, da das Ereignis mouseup durch die bösartige Warnung abgebrochen wird. Wenn Sie jedoch console.log verwenden, werden Sie feststellen, dass click weiterhin ausgeführt wird und das Optionsfeld weiterhin virtuell überprüft wird .

Wenn Sie jedoch nach aktiven Optionsfeldern suchen , werden Sie feststellen, dass keines aktiv ist. Das Verhalten von click element ist manchmal irritierend, aber e.preventDefault() wird es tun, keine Sorge.

    
Zeta 12.04.2012, 05:54
quelle