2012-03-31 1 views
5

Мне нужен CSS-селектор, который соответствует всем входным тегам, где тип неcheckbox.Выберите все теги ввода, где тип не установлен.

Этот матч:

<input value="Meow!" />

<input type="password" />

... но это делает не:

<input type="checkbox" />

Поскольку тип checkbox!

Это то, что у меня есть на данный момент:

input:not(type="checkbox")

К сожалению, это делает не работа!

Так вот приходит на мои вопросы:

  1. Как исправить мой селектор CSS3?
  2. Возможно ли без CSS3 и JavaScript?
  3. Возможно ли это без CSS3, но с использованием JavaScript?

Спасибо в любом совете!

ответ

17
  1. Ваш селектор атрибут отсутствует в квадратных скобках:

    input:not([type="checkbox"]) 
    
  2. Если вы применяете стили вам нужно будут использовать правило переопределения в CSS:

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

    Как вы можете себе представить, это почти невозможно сделать для элементов формы, потому что их стили браузера по умолчанию не определены в CSS.

  3. JQuery обеспечивает :checkbox selector, которые вы можете использовать:

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

    Вы также можете использовать тот же селектор, как вы в CSS:

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

Спасибо! Одна моя идея - я мог бы определить все возможные типы ввода, кроме «checkbox», и применить к ним свой собственный CSS. Тогда только тег 'input' без указанного типа не сработает. – daGrevis

+0

@daGrevis: Да, это хорошая альтернатива. В любом случае вам следует избегать элементов «input» без типов. – BoltClock

+0

Почему? Это HTML5 действительный и более легкий для ввода. – daGrevis

1

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

+0

Следует чаще обновлять страницу ... :) –