2012-03-31 9 views
5

Ho bisogno del selettore CSS che corrisponda a tutti i tag di input dove il tipo è noncheckbox.Seleziona tutti i tag di input dove type non è checkbox

Questa partita:

<input value="Meow!" />

<input type="password" />

... ma questo non :

<input type="checkbox" />

perché il tipo è checkbox!

Questo è ciò che ho in questo momento:

input:not(type="checkbox")

Purtroppo, lo fa non lavoro!

Così ecco che arriva mie domande:

  1. Come per risolvere il mio selettore CSS3?
  2. È possibile senza CSS3 e JavaScript?
  3. È possibile senza CSS3, ma con l'uso di JavaScript?

Grazie in ogni consiglio!

risposta

17
  1. vostro selettore di attributo manca le parentesi quadre:

    input:not([type="checkbox"]) 
    
  2. Se si sta applicando gli stili sarà necessario fare uso di una regola di override in CSS:

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

    Come puoi immaginare, è quasi impossibile farlo per gli elementi del modulo perché i loro stili predefiniti del browser non sono ben definiti nei CSS.

  3. jQuery offre :checkbox selector che è possibile utilizzare:

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

    È inoltre possibile utilizzare lo stesso selettore di come si fa in CSS:

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

Grazie! L'unica idea che ho ottenuto - Potrei definire tutti i possibili tipi di input eccetto 'checkbox' e applicare il mio CSS personalizzato a loro. Quindi, solo, il tag 'input' senza il tipo specificato fallirebbe. – daGrevis

+0

@daGrevis: Sì, è una buona alternativa. Dovresti evitare comunque elementi 'input' senza tipi. – BoltClock

+0

Perché? È HTML5 valido e più facile da scrivere. – daGrevis

1

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

+0

È necessario aggiornare la pagina più frequentemente ... :) –

Problemi correlati