Заполнитель данных в выбранном выборе вызывает ошибку на validator.w3

В моем приложении laravel 5.7/blade/jQuery v3.3.1/Bootstrap v4.1.2 Я использую библиотеку https://harvethq.github.io/выбранный/ (версия 1.8.7), и она работает, но я обнаружил небольшую ошибку с заполнителем данных. Я определяю выбор ввода как:

<select class = "form-control editable_field chosen_select_box" id = "chosen_customer_type" name = "chosen_customer_type" onchange = "javascript:chosenSelectionOnChange('customer_type'); " data-placeholder = " -Choose customer type- "  >
    <option value = ""  selected ></option>
    <option value = "SS" >SS</option
    ><option value = "RS" >RS</option>
</select>↩

Я должен установить первый элемент как элемент с пустым ключом и меткой, чтобы сделать заполнитель данных видимым, когда для этого выбора ввода не выбрано значение. Я нашел такое решение в Интернете, и без этого пустого элемента data-placeholder не работает.

But testing with https://validator.w3.org I got next error: Error: Element option without attribute label must not be empty. From line 199, column 254; to line 199, column 262 selected >

Я хотел бы исправить эту ошибку в выводе https://validator.w3.org.

Я инициализирую выбранные входы кодом JS:

$(".chosen_select_box").chosen({
    disable_search_threshold: 10,
    allow_single_deselect: true,
    no_results_text: "Nothing found!",
});

и такие выбранные входы выглядят так: https://imgur.com/a/GRXuyhk где для верхнего элемента не выбран элемент, а для второго элемента выбран элемент, и у него есть изображение отмены выбора, которое задается параметром allow_single_deselect в коде выше.

Есть ли способ избавиться от этих ошибок https://validator.w3.org?

Спасибо!

Просто дикая идея, но пробовали ли вы поместить атрибут label в параметр-заполнитель и установить его значение не пустым (или, возможно, установить его значение равным значению атрибута data-placeholder)? ➝ <option value = "" label = " -Choose customer type- " selected ></option>

IronGeek 15.02.2019 16:57

Извините, я не понял, что вы имеете в виду. Не могли бы вы привести пример?

user10889514 15.02.2019 17:27

IronGeek, попробовал то, что ты предложил. Нет, это не работает. «-Выберите тип клиента-» отображается как элемент с пустым значением, а не заполнителем.

user10889514 16.02.2019 08:47

Стоит прямо указать: ваша ошибка связана с отсутствующим атрибутом метки, как он описывает, а не с самим заполнителем данных.

user241244 17.02.2019 08:02
Как конвертировать HTML в PDF с помощью jsPDF
Как конвертировать HTML в PDF с помощью jsPDF
В этой статье мы рассмотрим, как конвертировать HTML в PDF с помощью jsPDF. Здесь мы узнаем, как конвертировать HTML в PDF с помощью javascript.
3
4
250
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вот простой фрагмент того, что я предлагаю ранее в комментарии.

Исходя из этого фрагмента, если мы заранее добавили атрибут label к заполнителю <OPTION>, то окончательная HTML-разметка, сгенерированная с помощью selected, достаточно действительна, чтобы пройти проверку W3C, в противном случае она не удалась:

<select class = "... chosen_select_box" data-placeholder = " -Choose customer type- ">
    <option value = "" label = " -Choose customer type- " selected ></option>
    ...
</select>

Notice the data-attribute on the select element and the label attribute on the option element is set to the same value, this is not required. Chosen will use the data-attribute on the select element for placeholder while the label attribute on option is only there to satisfy the W3C validation.

$(".chosen_select_box").chosen({
    disable_search_threshold: 10,
    allow_single_deselect: true,
    no_results_text: "Nothing found!",
});

function chosenSelectionOnChange(type) {
  console.info(type);
}
select {
  width: 200px;
}
<link href = "https://cdnjs.cloudflare.com/ajax/libs/chosen/1.8.7/chosen.min.css" rel = "stylesheet"/>
<script src = "https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script src = "https://cdnjs.cloudflare.com/ajax/libs/chosen/1.8.7/chosen.jquery.min.js"></script>

This should pass WC3 validation:
<select class = "form-control editable_field chosen_select_box" id = "chosen_customer_type1" name = "chosen_customer_type" onchange = "javascript:chosenSelectionOnChange('customer_type'); " data-placeholder = " -Choose customer type- "  >
    <option value = "" label = " -Choose customer type- " selected ></option>
    <option value = "SS" >SS</option
    ><option value = "RS" >RS</option>
</select>
<hr>
This does not pass WC3 validation:
<select class = "form-control editable_field chosen_select_box" id = "chosen_customer_type2" name = "chosen_customer_type" onchange = "javascript:chosenSelectionOnChange('customer_type'); " data-placeholder = " -Choose customer type- "  >
    <option value = ""  selected ></option>
    <option value = "SS" >SS</option
    ><option value = "RS" >RS</option>
</select>

Другие вопросы по теме