2012-03-31 14 views
5

Ich brauche CSS-Selektor, die alle Eingabe-Tags übereinstimmen, wo der Typ nichtcheckbox ist.Wählen Sie alle Eingabe-Tags, wo Typ nicht Kontrollkästchen ist

Dieses Spiel:

<input value="Meow!" />

<input type="password" />

... aber das tut nicht:

<input type="checkbox" />

Weil Typ ist checkbox!

Dies ist, was ich im Moment haben:

input:not(type="checkbox")

Leider tut es nicht Arbeit!

So, hier kommt meine Fragen:

  1. Wie mein CSS3 Wähler zu beheben?
  2. Ist es möglich ohne CSS3 und JavaScript?
  3. Ist es möglich ohne CSS3, aber mit der Verwendung von JavaScript?

Danke in jedem Rat!

Antwort

17
  1. Ihr Attributselektor fehlt die eckigen Klammern:

    input:not([type="checkbox"]) 
    
  2. Wenn Sie Stile anwenden möchten Sie benötigen die Verwendung einer Überschreibung der Regel in CSS zu machen:

    input { 
        /* Styles for all inputs */ 
    } 
    
    input[type="checkbox"] { 
        /* Override and revert above styles for checkbox inputs */ 
    } 
    

    Wie Sie sich vorstellen können, ist dies fast unmöglich für Formularelemente, da ihre Standard-Browserstile in CSS nicht gut definiert sind.

  3. jQuery bietet eine :checkbox selector die Sie verwenden können:

    $('input:not([type="checkbox"])') 
    
+0

Danke:

$('input:not(:checkbox)') 

Sie auch den gleichen Wähler, wie Sie in CSS tun können! Die einzige Idee, die ich bekam - ich könnte alle möglichen Eingabearten außer "Checkbox" definieren und meine benutzerdefinierten CSS auf sie anwenden. Dann würde nur das "Eingabe" -Tag ohne spezifizierten Typ fehlschlagen. – daGrevis

+0

@daGrevis: Ja, das ist eine gute Alternative. Sie sollten "Eingabe" -Elemente ohne Typen sowieso vermeiden. – BoltClock

+0

Warum ist das? Es ist HTML5 gültig und einfacher zu tippen. – daGrevis

1

input:not([type="checkbox"])

+0

Sollte die Seite häufiger aktualisieren ... :) –

Verwandte Themen