2012-03-31 11 views
5

Necesito el selector CSS que coincida con todas las etiquetas de entrada donde el tipo es nocheckbox.Seleccione todas las etiquetas de entrada donde el tipo no es la casilla de verificación

Este partido:

<input value="Meow!" />

<input type="password" />

... pero esto hace no:

<input type="checkbox" />

porque el tipo es checkbox!

Esto es lo que tengo en este momento:

input:not(type="checkbox")

Por desgracia, no lo hace trabajo!

Así que aquí viene mi pregunta:

  1. Cómo arreglar mi selector CSS3?
  2. ¿Es posible sin CSS3 y JavaScript?
  3. ¿Es posible sin CSS3, pero con el uso de JavaScript?

Gracias por cualquier consejo!

Respuesta

17
  1. Su selector de atributos le faltan los corchetes:

    input:not([type="checkbox"]) 
    
  2. Si va a aplicar estilos que tendrán que hacer uso de una regla de anulación en el CSS:

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

    Como se puede imaginar, es casi imposible hacer esto para los elementos de formulario porque sus estilos predeterminados de navegador no están bien definidos en CSS.

  3. jQuery proporciona una :checkbox selector que puede utilizar:

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

    También puede utilizar el mismo selector como lo hace en CSS:

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

Gracias! La única idea que tengo - me podría definir todos los tipos posibles de entrada a excepción 'checkbox' y aplicar mi CSS personalizado para ellos. Entonces, solamente, sin etiqueta 'input' tipo especificado fallaría. – daGrevis

+0

@daGrevis: Sí, esa es una buena alternativa. Deberías evitar los elementos 'input' sin tipos de todos modos. – BoltClock

+0

¿Por qué? Es HTML5 válido y más fácil de escribir. – daGrevis

1

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

+0

Debe actualizar la página con más frecuencia ... :) –

Cuestiones relacionadas