Element ohne Attribut selektieren
Felix Riesterer
- css
Liebe Mitlesende,
ich möchte alle Texteingabe-Elemente (<input>) selektieren. Dazu möchte ich sowohl mit Attribut (type="text"), als auch ohne (weil eben default) selektieren.
Mit Attribut: input[type=text] {...}
Ohne Attribut: ??
Gibt es überhaupt einen passenden Selektor, oder muss ich per PHP dafür sorgen, dass <input>-Elemente ohne type-Attribut vor dem Ausliefern eben doch eines bekommen?
Liebe Grüße,
Felix Riesterer.
Hi,
ich möchte alle Texteingabe-Elemente (<input>) selektieren. Dazu möchte ich sowohl mit Attribut (type="text"), als auch ohne (weil eben default) selektieren.
Mit Attribut:
input[type=text] {...}
Ohne Attribut: ??
Getestet in aktuellem Chrome & Firefox, Opera 12 und IE (funktioniert in >= 9).
MfG ChrisB
Lieber ChrisB,
input:not([type) { … }]
Suuuupertausenddank! Das spart eine MENGE Arbeit. :-)
Liebe Grüße,
Felix Riesterer.
@@Felix Riesterer:
nuqneH
ich möchte alle Texteingabe-Elemente (<input>) selektieren. Dazu möchte ich sowohl mit Attribut (type="text"), als auch ohne (weil eben default) selektieren.
Bist du sicher, dass du Eingabefelder für Passwörter, E-Mail-Adressen, Telefonnummern, Webadressen usw. nicht auch selektieren willst? Diese haben type-Attribute mit anderen Werten als "text".
Besser ist mal wohl dran, wenn man Radiobutton, Checkboxen und ggfs. Buttons ausschließt:
input:not([type=radio]):not([type=checkbox])
bzw.
input:not([type=radio]):not([type=checkbox]):not([type=button]):not([type=submit]):not([type=reset])
Qapla'
Lieber Gunnar Bittersmann,
input:not([type=radio]):not([type=checkbox])
bzw.
input:not([type=radio]):not([type=checkbox]):not([type=button]):not([type=submit]):not([type=reset])
hmm. Ich wollte lediglich "aufgehübschtere" Eingabefelder und Buttons anbieten, falls der Browser visuelle Änderungen zulässt. Tatsächlich habe ich bisher Passwort-Felder nicht bedacht. Dass ich Buttons in mehreren Formen berücksichtigen muss (und sogar Links, deren Funktionalität im Admin-Bereich wie Buttons visualisiert werden sollen), ist mir aber schon klar.
Diese Verkettung von :not()-Funktionen (denn so muss es doch aus Sicht einer Scriptsprache aussehen!) ist noch nicht "schön". Wenn man zu solch einem Code-Unkraut gezwungen ist, dann sollte es innerhalb der runden Klammern auch einen Verkettungsoperator geben... Warum nicht demnächst so?
input:not([type=radio].[type=checkbox].[type=button].[type=submit].[type=reset]) {...}
Noch schöner fände ich ja, wenn man in den eckigen Klammern eine eher Regex-orientierte Notation verwenden könnte (jeder JS-fahige Browser muss eine solche haben):
input:[type!=radio|checkbox|button|submit|reset] {...}
Jedenfalls vielen Dank für Deine Denkanstöße!
Liebe Grüße,
Felix Riesterer.
@@Felix Riesterer:
nuqneH
Tatsächlich habe ich bisher Passwort-Felder nicht bedacht.
Und die in HTML5 neuen Felder type={"email"|"tel"|"url"|…} auch nicht.
Diese Verkettung von :not()-Funktionen (denn so muss es doch aus Sicht einer Scriptsprache aussehen!)
CSS ist keine.
ist noch nicht "schön".
Schönheit liegt im Auge des Betrachters. Was genau stört dich?
Wenn man zu solch einem Code-Unkraut gezwungen ist, dann sollte es innerhalb der runden Klammern auch einen Verkettungsoperator geben...
Ah, du willst de Morgan: ¬a ∧ ¬b ∧ ¬c ∧ … = ¬(a ∨ b ∨ c ∨ …)
Qapla'
@@Gunnar Bittersmann:
nuqneH
Wenn man zu solch einem Code-Unkraut gezwungen ist, dann sollte es innerhalb der runden Klammern auch einen Verkettungsoperator geben...
Ah, du willst de Morgan: ¬a ∧ ¬b ∧ ¬c ∧ … = ¬(a ∨ b ∨ c ∨ …)
In Level 4 sollte das möglich sein:
input:not([type=radio], [type=checkbox], [type=button], [type=submit], [type=reset])
Demnächst in Ihrem Browser.
Qapla'
PS: Fürs Archiv noch der Verweis auf den anderen Thread.