2017-02-19 1 views
0

Ich habe ein Anker-Tag um einen Radio-Eingang gewickelt. Wenn ich auf sie klicke, wird das Optionsfeld aktiviert, aber das Anker-Tag tut nichts.Anchor Tag's On Click Ereignis ist Firing, aber Standard ist nicht

<a href="https://stackoverflow.com"> 
    <input type="radio" /> 
</a> 

Ich habe versucht, einen Onclick-Handler mit dem Anker-Tag hinzugefügt, um zu sehen, ob es angeklickt wurde, und es funktionierte wie erwartet:

<a onclick="console.log('anchor clicked');" href="https://stackoverflow.com"> 
    <input type="radio" /> 
</a> 

Dies zeigte mir auch, dass der Anker-Tag zweimal so angeklickt wurde Ich habe event.stopPropagation dem Eingangs-Tag hinzugefügt:

<a onclick="console.log('anchor clicked');" href="https://stackoverflow.com"> 
    <input onclick="event.stopPropagation();" type="radio" /> 
</a> 

Antwort

2

Es ist ungültig html5. Per the spec besagt das Inhaltsmodell des Elements a, dass es keinen interaktiven Inhalt einen Nachkommen haben kann. Ein nicht versteckter input ist interaktiver Inhalt.

+0

Ich stelle seine Anzeige in css auf "keine". – epiqueras

+0

@epiqueras lesen Sie den Link. ein nicht versteckter 'Eingang' ist' type = hidden' –

+0

Korrekte Antwort, aber ich denke du meinst "eine nicht versteckte' Eingabe' ist * alles außer * 'type = hidden'" –

Verwandte Themen