2013-10-31 49 views
13

selectにあるoptionvalueが、一意でなければならないというHTML仕様の要件はありますか?HTML:selectでは、各オプションのvalue属性が一意である必要がありますか?

私の質問は、複製valueの妥当性についてです。次のコードブロックのすべての非実用性を無視してください。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> 
+0

有効である必要があります。あなたは、あなたが懸念している場合は、常に[バリデータ](http://html5.validator.nu)を介してあなたのコードを実行することができます。 –

答えて

8

だ、select -listでoptionの値はselect要素の妥当性を重要ではありません。それ以外は何もしません。

要素のidは、その要素に正しくアクセスするための一貫性のために一意でなければならないことを覚えておく必要があります。重複したidが複数の要素に対して存在する場合、それらのうち最新のものが選択されます。 selectリストのoptionの値の重複について心配する必要はありません。

これも必要な場合もあります。次

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

次に、ユーザはroseのいずれかを選択した場合、lotuslily select要素の値がflowerなり、そして場合mangopineappleのいずれかは、select要素の値がされる選択されfruit。だから完全にOK、この時代が必要かもしれません。

+3

オプションタグを閉じる必要があります:P – usernolongerregistered

+0

@Agonyは必要ですか?入れ子がないので、内容がどのように表示されるかは「値」に関係なく心配する必要はありません。 –

+0

使用するIDEに応じて、はい。しかし、それは良い習慣です。そして再び、私は '
'タグを閉じます。だから多分私はちょうど編集的です。 – usernolongerregistered

0

はい、このselectは有効です。 optionの値は一意である必要はありません。

ここJSFiddleデモ確かに

Live Demo

2

いいえ、このような要件はありません。すべてのHTML仕様では、制限を課さずに単にテキスト(CDATA)値を持つものとしてvalue属性を定義しています。

これはもちろん正式な側面です。 2つのoption要素を同じselect要素内に同じvalue属性を持つことが意味をなさない状況を想像するのは難しいです。正式には有効ですが、必要と思われる場合は、誤って分析している可能性があります。

+1

OPには、同じ 'value'で2つの' options'をどのようにしなければならないかのかなりまともな例があります:)私は個人的にはそうした方法で注文メニューを作っていません。 – usernolongerregistered

+2

@Agony、スケッチーな例は、同じ値を使用しない*べきである場合の良い例です。大丈夫ですが、顧客にバナナやニンジンを届けようとするかどうかはわかりません。 –

+0

ハハ、それに同意してください。あなたがそれを見つけることができる唯一の方法は、内部HTMLを引っ張った場合です。これは、HTMLを制御しているときには常にひどい考えです。私が言ったように、私はそうした方法で注文メニューを作っていないだろう。 – usernolongerregistered

関連する問題