Подтвердить что ты не робот

Селектор CSS для метки, привязанной к вводу

Есть ли способ в CSS выбрать label, привязанный к полям input (через атрибут for) с набором атрибутов required? Что-то вроде:

label:input[required] {
  ...
}

В настоящее время я добавляю class="required" к меткам и входам для стилизации. Теперь у меня есть атрибут HTML5 required="required" в необходимых полях ввода. Было бы неплохо удалить избыточные атрибуты класса.

ближайший ответ, который я нашел, не использует атрибут label element for, но требует, чтобы label был непосредственно смежным с входом в HTML.

4b9b3361

Ответ 1

Как насчет CSS 2 Атрибуты выбора Это довольно совместимо с браузерами.

Пример:

<style>
label[required=required]
{
color: blue;
}
</style>
<label required="required" for="one">Label:</label><input name="one" id="one" />

Также проверьте этот вне.

Ответ 2

Это решение работает в большинстве современных браузеров:

<style>

label > input[required="required"] {
    background: red; 
}

</style>
<label for="myField"><input required="required" id="myField" /></label>

Ответ 3

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

Лучший подход, на мой взгляд, - отступить и посмотреть на общую картину. У вас есть форма, где требуются некоторые поля, а некоторые нет. Это хороший подход, чтобы сначала дать пользователю все необходимые поля или сгруппировать необходимые поля вместе и четко отделить их от необязательных полей.

Вы можете создать такую ​​структуру, как

<form>
     <ul class="required_fields">
       <li>
          <label>username</label>
          <input />
       </li>
       <li>
          <label>email</label>
          <input />
       </li>
     </ul
     <ul class="optional_fields">
          ...
     </ul>
 </form>

/* CSS */
.required_fields label {font-weight: bold} 
.required_fields label:after { content: "*"; color: red } /*more styles for labels*/

Для такого подхода существует ряд преимуществ. Вы можете легко добавлять и удалять элементы из "требуемой" группы, не изменяя каждый отдельно. Вы можете назначить "необходимый" класс так высоко, как хотите. Если форма имела "обязательный" класс, тогда все в ней было бы помечено как необходимо. Есть меньше мест для внесения изменений, если вы решили, что "требуемый" класс следует назвать чем-то другим. И вообще этот подход помогает вам лучше организовать ваши формы. Вы не должны смешивать обязательные и необязательные поля.

Вы можете сделать этот шаг дальше и иметь некоторый javascript, который также добавит требуемый атрибут в поля ввода.

$(".required_fields input").each(function(){
   this.setAttribute('required', 'required');
});