HTML: В элементе select требуется, чтобы атрибут value каждой опции был уникальным?

Существуют ли какие-либо требования в спецификации HTML, которые говорят, что value option в select должно быть уникальным?

Мой вопрос касается действительности двойного value s. Игнорировать все непрактичности в следующем блоке кода, является ли select действительным?

<select id="produce" multiple>
    <option value="2.00">Apple</option>
    <option value="1.50">Banana</option>
    <option value="1.50">Carrot</option>
</select>

<input id="total" type="text">

<script>
    $('#produce').on('change',function(e) {
        var sum = 0;
        $('#produce option:selected').each(function() {
            sum += parseFloat($(this).val());
        });
        $('#total').val(sum.toFixed(2));
    });
</script>

Ответ 1

Значение option в списке select не влияет на действительность элемента select.

Единственное, что вам нужно иметь в виду, это то, что id элемента должен быть уникальным для согласованности при правильном доступе к этому элементу. Если для нескольких элементов существует повторяющийся id, будет выбран последний экземпляр этого id. Вам определенно не нужно беспокоиться о дублировании значений option в списке select.

Это может даже потребоваться, например, следующее:

<select>
    <option value="fruit">mango</option>
    <option value="flower">rose</option>
    <option value="fruit">pineapple</option>
    <option value="flower">lotus</option>
    <option value="flower">lily</option>
</select>

Теперь, если пользователь выбирает один из rose, lotus, lily значение элемента выбора будет flower, а в случае выбора mango и pineapple значение элемента select будет fruit. Так что отлично, вам может понадобиться это время.

Ответ 2

Нет, такого требования нет. Все спецификации HTML определяют атрибут value просто как имеющий значение текста (CDATA) без каких-либо ограничений.

Это, конечно, только формальная сторона. Трудно представить ситуацию, когда имеет смысл иметь два элемента- option в одном элементе select с одним и тем же атрибутом value. Это формально, но если вы считаете, что вам это нужно, вы, вероятно, что-то неправильно проанализировали.

Ответ 3

Да, этот select действителен. Значение option не обязательно должно быть уникальным.

Здесь демонстрационная версия JSFiddle

Live Demo