2013-10-31 14 views
13

Có bất kỳ yêu cầu nào trong thông số HTML nói rằng value s trong số option s trong một select phải là duy nhất không?HTML: Trong một lựa chọn, nó có yêu cầu thuộc tính giá trị của mỗi tùy chọn là duy nhất không?

Câu hỏi của tôi về tính hợp lệ của số trùng lặp value s. Bỏ qua tất cả các tính không thực tế trong khối mã sau đây, là select có hợp lệ không?

<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

Phải hợp lệ. Bạn luôn có thể chạy mã của bạn thông qua một [validator] (http://html5.validator.nu) nếu bạn quan tâm. –

Trả lời

8

Chắc chắn, giá trị của option trong select -list không quan trọng giá trị của phần tử select. Không có gì khác làm như vậy.

Một điều bạn cần ghi nhớ là id của một phần tử phải là duy nhất để nhất quán trong việc truy cập phần tử đó đúng cách. Nếu trùng lặp id s, sẽ có nhiều phần tử mới nhất sẽ được chọn. Bạn chắc chắn không cần phải lo lắng về việc sao chép các giá trị của số option trong danh sách select.

Điều này thậm chí có thể được yêu cầu, ví dụ: như sau:

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

Bây giờ nếu người dùng chọn một trong hai rose, lotus, lily giá trị của yếu tố lựa chọn sẽ flower, và trong trường hợp một trong hai mangopineapple được chọn giá trị của phần tử select sẽ fruit. Vì vậy, hoàn toàn OK, bạn có thể cần thời gian này ..

+3

Bạn nên đóng các thẻ tùy chọn của mình: P – usernolongerregistered

+0

@Gần là cần thiết? Không có lồng nhau, do đó không cần phải lo lắng nó chỉ là cách nội dung sẽ được hiển thị không quan trọng 'giá trị'. –

+0

Tùy thuộc vào IDE bạn sử dụng, có. Đó là thực hành tốt, mặc dù. Sau đó, một lần nữa, tôi đóng '
' thẻ, vì vậy có lẽ tôi chỉ là hoang tưởng. – usernolongerregistered

0

Có, điều này select là hợp lệ. Giá trị của option không nhất thiết phải là duy nhất.

Dưới đây là một bản demo JSFiddle

Live Demo

2

Không, không có yêu cầu như vậy. Tất cả các đặc tả HTML xác định thuộc tính value chỉ đơn giản là có giá trị văn bản (CDATA) mà không áp đặt bất kỳ hạn chế nào.

Đây là, tất nhiên, chỉ là mặt chính thức. Thật khó để tưởng tượng một tình huống mà sẽ có ý nghĩa khi có hai thành phần option trong cùng một thành phần select với cùng thuộc tính value. Đó là chính thức hợp lệ, nhưng nếu bạn nghĩ rằng bạn cần nó, bạn có thể misanalyzed một cái gì đó.

+1

OP có một ví dụ khá tốt về cách bạn sẽ cần 2 'tùy chọn' với cùng một' giá trị' :) Mặc dù cá nhân tôi sẽ không thực hiện một trình đơn đặt hàng theo cách đó. – usernolongerregistered

+2

@ Hoá đơn, ví dụ sơ sài là một ví dụ điển hình về trường hợp bạn nên * không * sử dụng cùng một giá trị. Bạn sẽ nhận được giá hợp lý, nhưng bạn sẽ không biết có cung cấp chuối hay cà rốt cho khách hàng hay không. –

+0

Haha, xem tôi đồng ý với điều đó. Cách duy nhất bạn có thể tìm ra điều đó là nếu bạn kéo HTML bên trong, điều luôn luôn là một ý tưởng khủng khiếp khi bạn có quyền kiểm soát HTML. Như tôi đã nói, tôi sẽ không thực hiện một đơn đặt hàng theo cách đó. – usernolongerregistered

Các vấn đề liên quan