2010-05-20 48 views
24

Âm thanh như một câu hỏi ngớ ngẩn, nhưng tôi tự hỏi cách tốt nhất để nói rằng hộp kiểm được chọn/bỏ chọn trong HTML là gì.Cú pháp cho các thuộc tính boolean là gì, ví dụ: một hộp kiểm được chọn, trong HTML?

Tôi đã thấy rất nhiều ví dụ khác nhau:

<input type="checkbox" checked="checked" /> 
<input type="checkbox" /> 

<input type="checkbox" checked="yes" /> 
<input type="checkbox" checked="no" /> 

<input type="checkbox" checked="true" /> 
<input type="checkbox" checked="false" /> 

Những trình duyệt làm việc với những người thân mà trong số này, và quan trọng nhất, không jQuery tìm ra hộp được kiểm tra ở cả 3?

Chỉnh sửa: Thông số W3C dường như ngụ ý rằng chỉ cần kiểm tra attr là có chính xác. Điều đó có nghĩa là checked = "false" và checked = "no" vẫn sẽ kiểm tra hộp không?

+0

Bản sao có thể có của [Giá trị thích hợp cho thuộc tính đã chọn của hộp kiểm HTML là gì?] (Http://stackoverflow.com/questions/7851868/whats-the-proper-value-for-a-checked-attribute- of-an-html-checkbox) –

Trả lời

31

Trong HTML:

<input type="checkbox" checked> 
<input type="checkbox" checked="checked"> 

Đối với XHTML bạn phải sử dụng thuộc tính/giá trị cặp kết hợp:

<input type="checkbox" checked="checked" /> 
+2

'checked =" "' cũng hợp lệ. Tài liệu đọc bổ sung: http://www.whatwg.org/specs/web-apps/current-work/#boolean-attributes –

+0

đáng đọc câu trả lời này tại đây: https://stackoverflow.com/a/24588369/5264501 –

7

HTML:

Bất kỳ trong số họ sẽ là một trong những quyền như họ nói về W3C page. Thuộc tính checked chỉ cần được đặt.

Như tôi đã viết trong Coronatus' bình luận:

Trong thực tế, nó không quan trọng nếu nó kiểm tra, kiểm tra = 'bất cứ điều gì' hay kiểm tra = 'kiểm tra'. Đó là kiểm tra giá trị boolean, do đó, hoặc là đúng (bộ) hoặc sai (không được đặt).

XHTML:

Bạn cần phải xác định nó, vì vậy checked="checked" là người duy nhất có giá trị. Hầu hết các trình duyệt có thể sẽ phân tích cú pháp các giá trị HTML chính xác, nhưng bạn sẽ gặp lỗi trên trang của bạn.

1

Sự hiện diện của thuộc tính "đã chọn" chỉ định trạng thái. Giá trị không liên quan/không cần thiết.

<input type="checkbox" checked="checked" /> 
<input type="checkbox" /> 

là đề nghị của tôi

+3

Giá trị không thành vấn đề - nó chỉ có thể được "kiểm tra" (Trình duyệt chỉ lỗi chính xác cho rác. Không phụ thuộc vào khôi phục lỗi, viết mã lỗi miễn phí thay thế).Nếu bạn đang viết HTML (trái ngược với XHTML), bạn có thể (và nên) bỏ qua tên (và bằng và dấu ngoặc kép) chỉ để lại giá trị. (Boolean thuộc tính là lạ.) – Quentin

+0

Như bạn đã thấy từ mã trên bài tôi không nói rằng giá trị không nên có mặt. Tôi chỉ nói rằng bạn có thể viết kiểm tra = "hello" hoặc kiểm tra = "có thể" và vẫn nhận được kết quả mong muốn. – kazanaki

+0

Nhưng có bạn đúng rằng chúng ta nên nhắm mục tiêu XHTML và không chỉ HTML. – kazanaki

5

Theo HTML spec, đúng một là:

<input type="checkbox" checked /> 
<input type="checkbox" /> 

Tôi sử dụng công cụ này và jQuery hoạt động hoàn hảo với chúng.

+0

Trong thực tế, nó không quan trọng nếu nó được kiểm tra, kiểm tra = "bất cứ điều gì" hoặc kiểm tra = "kiểm tra". Nó kiểm tra giá trị boolean, vì vậy nó là true (set) hoặc false (không được thiết lập). –

2

Một thử nghiệm nhanh cho thấy rằng jQuery tương đương với bất kỳ giá trị nào được đặt để được kiểm tra.

alert($('input:checked').length); 
// Returns 5 

Ngay cả chuỗi trống và giá trị âm.

1

Tôi sẽ cẩn thận khi sử dụng nó trên chrome, firefox và opera. Chorme dường như có vấn đề với các hộp kiểm hiển thị, Firefox phân biệt chữ hoa và chữ thường, và opera dường như chạy tốt nhưng chậm khi cập nhật. Có thể chỉ là phiên bản của các trình duyệt đang được sử dụng.

Khác với tôi tin rằng nó sẽ chạy <input type="checkbox" checked /> tốt trong tất cả chúng. Sự khác biệt duy nhất thực sự là cách các trình duyệt riêng lẻ xuất hiện để hiển thị nội dung trên trang.

1

Thông số W3C dường như ngụ ý rằng chỉ cần kiểm tra attr là có chính xác. Điều đó có nghĩa là checked = "false" và checked = "no" vẫn sẽ kiểm tra hộp không?

Chính xác. Đó là lý do tại sao bạn nên sử dụng checked="true"checked="yes", chúng ngụ ý rằng checked="false"checked="no" sẽ không chọn hộp này.

0

HTML5 đặc tả:

http://www.w3.org/TR/html5/infrastructure.html#boolean-attributes:

Sự hiện diện của một thuộc tính boolean trên một yếu tố đại diện cho giá trị thực sự, và sự vắng mặt của thuộc tính đại diện cho giá trị sai.

Nếu thuộc tính có mặt, giá trị của nó phải là chuỗi rỗng hoặc giá trị là một đối sánh không phân biệt chữ hoa chữ thường ASCII cho tên chuẩn của thuộc tính, không có khoảng trắng đầu hoặc cuối.

Kết luận:

Hãy boolean là một thuộc tính boolean của thẻ tag, như checked<input type="checkbox".

Sau đây là hợp lệ, tương đương và đúng:

<tag boolean /> 
<tag boolean="" /> 
<tag boolean="boolean" /> 
<tag boolean="BoOlEaN" /> 

Sau đây là không hợp lệ:

<tag boolean="0" /> 
<tag boolean="1" /> 
<tag boolean="false" /> 
<tag boolean="true" /> 

Sự vắng mặt của các thuộc tính là cú pháp hợp lệ chỉ cho sai :

<tag /> 

Khuyến nghị

Nếu bạn quan tâm về cách viết XHTML hợp lệ, sử dụng boolean="boolean", vì <tag boolean> là XHTML hợp lệ (nhưng HTML hợp lệ) và lựa chọn thay thế khác ít có thể đọc được. Khác, chỉ cần sử dụng <tag boolean> vì nó ngắn hơn.

+0

Bất kỳ ý tưởng nào đằng sau thiết kế này? Có vẻ như truy cập trực quan và tôi không thể nghĩ ra bất kỳ lợi thế nào chỉ bằng cách sử dụng giá trị boolean. Ví dụ: tôi đang làm việc với công cụ hiển thị (VisualForce/Salesforce) không hỗ trợ ký pháp này. – NSjonas

+0

@NSjonas Không! :-) có thể vì viết ngắn hơn? –

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