2017-06-24 6 views
1

Ich dachte, dass es nur zwei Möglichkeiten gibt, Element zu fokussieren - mit JavaScript, oder im Fall, dass es ein div mit einem contenteditable Attribut ist. Aber dieses Mal habe ich etwas anderes versucht: Ich habe versucht, innerhalb eines div (ohne contenteditable) mit dem Elternteil zu bewirken.Warum ist es unmöglich, ein Kindelement mit Fokus zu aktivieren?

Ich weiß, dass, wenn ein untergeordnetes Element fokussiert ist, wird das übergeordnete konzentriert zu - ich meine, wenn ich das folgende Beispiel:

<form action="/" method="get"> 
    <input type="text" placeholder="Hi I'm Text!" /> 
</form> 

Wenn ich auf das Textfeld konzentrieren, wird das Formular zu konzentrieren . Ich kann folgendes tun:

form input[type="text"]:focus { 
    /* CSS goes here */ 
} 

Aber Ich kann nicht etwas tun, wie folgt aus:

form:focus > input[type="text"] { 
    /* The same CSS goes here */ 
} 

ich mein eigenes Problem bereits gelöst, aber ich frage mich, warum es so nicht funktionieren kann. Wie ich schon sagte (und ich bin frei, mich zu korrigieren, wenn ich falsch liege) - wenn ich mich auf die Eingabe konzentriere, fokussiere ich automatisch auch das Elternelement (und es ist ein eigenes Elternelement usw.) Also warum kann ich nicht einfach Verwenden Sie :focus für das übergeordnete Element und dann das untergeordnete Element?

+0

Mögliche Duplikat [? Welche HTML-Elemente können den Fokus erhalten] (https://stackoverflow.com/questions/1599660/which-html-elements-can-receive-focus) – BSMP

Antwort

1

Sie können sich nicht auf ein form Element konzentrieren. Wenn Sie möchten, können Sie das Attribut tabindex hinzufügen, z. B. <form tabindex="0">.

+0

I Ich weiß, ich kann nicht ... Ich fragte, warum ist das unmöglich? – natanelg97

+0

Da nur einige der Elemente fokussiert werden können, hängt dies vom verwendeten Browser ab. [Diese Antwort] (https://stackoverflow.com/a/1600194/63409650) erklärt es. –

+1

In Ordnung. Vielen Dank! (תדדד בבב!) – natanelg97

Verwandte Themen