2012-05-31 25 views
33

Tôi đã thấy ba triển khai chọn trước hộp kiểm. Tôi bắt đầu bằng cách sử dụng kiểm tra = "kiểm tra" bởi vì tôi nghĩ rằng đó là cách "thích hợp" (không bao giờ giống như "kiểm tra" = "có" tuy nhiên). Tôi đang nghĩ đến việc thay đổi để kiểm tra = "true" vì nó có vẻ dễ đọc hơn và dễ viết mã JavaScript hơn. Lưu ý rằng cùng một câu hỏi này áp dụng cho các thuộc tính khác như "disabled" = "disabled" so với "disabled" = "true". Miễn là tôi nhất quán, đang sử dụng "đúng" cách tiếp cận ưa thích? Cảm ơn bạnhộp kiểm nhập đúng hoặc được chọn hoặc có

<input type="checkbox" checked="checked" value="123" name="howdy" /> 
<input type="checkbox" checked="true" value="123" name="howdy" /> 
<input type="checkbox" checked="yes"  value="123" name="howdy" /> 
+0

gì về $ ('input [name = foo]'). attr ('checked', true) ;? Nếu nó thực sự là $ ('input [name = foo]'). Attr ('checked', 'checked')? – user1032531

Trả lời

55

Chỉ checkedchecked="checked" hợp lệ. Các tùy chọn khác của bạn phụ thuộc vào khôi phục lỗi trong trình duyệt.

checked="yes"checked="true" đặc biệt xấu như họ ngụ ý rằng checked="no"checked="false" sẽ thiết lập trạng thái mặc định được đánh dấu ... mà họ sẽ không.

+4

[HTML 5 spec] (http://www.whatwg.org/specs/web-apps/current-work/multipage/common-microsyntaxes.html#boolean-attribute). –

+0

Xin lỗi, có nghĩa là để thêm nó ở đây ... Điều gì về $ ('đầu vào [tên = foo]') attr ('kiểm tra', đúng) ;? Nếu nó thực sự là $ ('input [name = foo]'). Attr ('checked', 'checked')? – user1032531

+0

Nó phải là 'jQuery (selector) .prop ('checked', true);' ('attr' không phù hợp về cách nó xử lý thuộc tính checked như vậy nên tránh vì lợi ích của bộ não của người duy trì). – Quentin

3

Theo đó, W3C thuộc tính của đầu vào đã kiểm tra có thể không có hoặc không có hoặc đã "kiểm tra" làm giá trị của nó. Điều này không làm mất hiệu lực các giá trị khác vì không có giới hạn đối với việc triển khai trình duyệt để cho phép các giá trị như "true", "on", "yes" và cứ như vậy. Để đảm bảo rằng bạn sẽ viết một hộp kiểm qua/trình duyệt sử dụng kiểm tra = "kiểm tra", theo đề nghị của W3C.

thuộc tính của đầu vào bị vô hiệu hóa, chỉ đọc và của đối tượng ismap vẫn hoạt động theo cùng một cách.

EDITED

rỗng không phải là một giá trị hợp lệ cho các thuộc tính kiểm tra, tàn tật, chỉ đọc và ismap đầu vào, như cảnh báo bởi @Quentin

+0

No. Nó nói rằng thuộc tính được đánh dấu có thể được bỏ qua hoặc nó có thể có giá trị 'được kiểm tra'. Điều đó không làm mất hiệu lực mọi giá trị khác (HTML chỉ cho phép bạn sử dụng những thứ được phép, nó không cho phép bạn sử dụng mọi thứ không bị cấm). Vì nó là thuộc tính boolean, bạn có thể bỏ qua mọi thứ * ngoại trừ * giá trị trong khi có thuộc tính. ví dụ: Với 'checked =" checked "', bạn có thể commit 9 ký tự đầu tiên và ký tự cuối cùng). – Quentin

+0

Tôi nói rằng điều này không làm mất hiệu lực các trình duyệt ** gây ra các giá trị khác ** có thể thực hiện theo cách của họ để phân tích cú pháp html như họ muốn vì họ chấp nhận thuộc tính đã kiểm tra/vắng mặt hoặc được kiểm tra = "checked" as ** recommended ** by W3C . Tôi chấp nhận "casue" rỗng "negativation" không phải là giá trị hợp lệ, nhưng mọi thứ khác vẫn được áp dụng. –

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