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