2013-10-31 12 views
13

Sind die Anforderungen in der HTML-Spezifikation, dass die value s der option s in einer select muss eindeutig sein?HTML: In einer Auswahl ist es erforderlich, dass das Wertattribut jeder Option eindeutig ist?

Meine Frage ist über die Gültigkeit von Duplikat value s. Ignorieren Sie alle Unpraktiken im folgenden Codeblock, ist select gültig?

<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

Sollte gültig sein. Sie können Ihren Code immer über einen [validator] (http://html5.validator.nu) ausführen, wenn Sie betroffen sind. –

Antwort

8

Auf jeden Fall, der Wert des option im select -list nicht die Gültigkeit des select Element ist egal. Nichts anderes tut es.

Eine Sache, die Sie beachten müssen, ist, dass die id eines Elements für die Konsistenz beim Zugriff auf dieses Element eindeutig sein muss. Wenn Duplikate id s für mehrere Elemente vorhanden sind, wird das letzte ausgewählt. Sie müssen sich definitiv keine Gedanken über die Duplizität der Werte der option s in der select Liste machen.

Dies kann sogar erforderlich sein, z.B. die folgenden:

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

Nun, wenn der Benutzer entweder von rose, lotus, lily den Wert des ausgewählten Elements wird flower sein, und im Falle einer von mango und pineapple wird, um den Wert des select Element ausgewählt wird fruit. Also vollkommen in Ordnung, du kannst diesen Sim mal brauchen ..

+3

Sie sollten Ihre Option Tags schließen: P – usernolongerregistered

+0

@ Agony ist es notwendig? Es gibt keine Verschachtelung, also brauchen Sie sich keine Sorgen zu machen, nur wie der Inhalt angezeigt wird, spielt keine Rolle. –

+0

Je nachdem, welche IDE Sie verwenden, ja. Es ist jedoch eine gute Übung. Andererseits schließe ich '
' Tags, also bin ich vielleicht nur paranoid. – usernolongerregistered

2

Nein, es gibt keine solche Anforderung. Alle HTML-Spezifikationen definieren das value-Attribut einfach als einen Text (CDATA) -Wert, ohne irgendwelche Einschränkungen aufzuerlegen.

Dies ist natürlich nur die formale Seite. Es ist schwierig, sich eine Situation vorzustellen, in der es sinnvoll wäre, zwei option Elemente im gleichen select Element mit dem gleichen value Attribut zu haben. Es ist formell gültig, aber wenn Sie denken, dass Sie es brauchen, haben Sie wahrscheinlich etwas falsch analysiert.

+1

OP hat ein ziemlich anständiges Beispiel dafür, wie man 2 'Optionen' mit dem gleichen' Wert' braucht :) Obwohl ich persönlich auf diese Weise kein Bestellmenü machen würde. – usernolongerregistered

+2

@ Agony, das skizzenhafte Beispiel ist ein gutes Beispiel für einen Fall, in dem Sie den gleichen Wert * nicht * verwenden sollten. Sie würden den richtigen Preis bekommen, aber Sie würden nicht wissen, ob Sie Bananen oder Karotten an den Kunden liefern. –

+0

Haha, sehe ich dem zustimmen. Die einzige Möglichkeit, das herauszufinden, ist, wenn Sie den inneren HTML-Code gezogen haben, was immer eine schreckliche Idee ist, wenn Sie die Kontrolle über den HTML-Code haben. Wie ich schon sagte, ich würde kein Bestellmenü auf diese Art und Weise machen. – usernolongerregistered