2012-05-21 27 views
13

Tôi muốn tạo hộp kiểm chỉ đọc. Như thế này:Làm cách nào để tô xám hộp kiểm html?

<input type="checkbox" onclick="return false;"> 

Tôi muốn các hộp kiểm để trông giống như nó bị vô hiệu hóa hoặc chuyển sang màu xám.

Tôi làm cách nào để thực hiện việc này?

Trả lời

15

Bạn cần phải vô hiệu hóa các hộp kiểm thêm:

<input type="checkbox" onclick="return false;" disabled="disabled"> 

Để đăng giá trị, chỉ cần làm cho nó chỉ đọc thay vì:

<input type="checkbox" onclick="return false;" readonly="readonly"> 

Bạn có nhãn hộp kiểm phong cách và nguyên liệu đầu vào chỉ đọc với CSS, ví dụ: đầu vào [readonly = "readonly"] {} nhưng trình duyệt sẽ làm cho hộp kiểm xuất hiện màu xám khi được đặt thành chỉ đọc.

Cập nhật:

Bạn đang ở lòng thương xót của trình duyệt khi phong cách hộp kiểm & để tạo kiểu một cách nhất quán trên tất cả các trình duyệt, bạn phải dùng đến hình ảnh ví dụ: http://ryanfait.com/resources/custom-checkboxes-and-radio-buttons/

Nếu bạn don' t muốn làm điều này (và nó có vẻ như một giải pháp dài), giải pháp đơn giản nhất là tắt hộp kiểm để nó xuất hiện chính xác và đăng giá trị như đầu vào bị ẩn, ví dụ:

<input type="checkbox" onclick="return false;" disabled="disabled"> 
<input type="hidden" name="checkboxval" value="111" /> 
+0

color: #aaaaaa; - Vâng. Tôi cần một cái gì đó như thế này. Nhưng thực tế điều này không thay đổi sự xuất hiện dù sao đi nữa, chẳng hạn như – Roman

+0

@Roman bạn đang sử dụng trình duyệt nào? Hộp kiểm sẽ xuất hiện màu xám chỉ bằng cách đặt thuộc tính chỉ đọc. Nếu bạn muốn nhãn chuyển sang màu xám, hãy đặt css. Xem hộp kiểm này: http: //jsfiddle.net/Btvpq/ – FluffyKitten

+0

"sẽ xuất hiện màu xám chỉ bằng cách đặt thuộc tính chỉ đọc" - Đã thử trong IE8, FF12.0, Chrome. Chỉ hoạt động trong Chrome. – Roman

2

chỉ cần thêm thuộc tính 'disabled' trên hộp như thế này

<input type="checkbox" disabled="disabled" /> 
+0

không cần thêm thuộc tính của onclick – Talha

4
<input type="checkbox" class="readonly"> 

Css

input.readonly { 
    opacity : .50; 
    filter : alpha(opacity=50); /* IE<9 */ 
    cursor : default; 
} 

js

$('input.readonly').on('click', function(evt) { 
    evt.preventDefault(); 
} 

Thêm một lớp readonly đến các yếu tố bạn muốn grayout : qua css bạn đặt opacity và thay đổi kiểu cursor. Sau đó, xóa javascript nội dòng và ngăn tác vụ mặc định cho input.readonly yếu tố về sự kiện nhấp chuột

+0

Điều này sẽ hoạt động, nhưng một giải pháp HTML thuần túy dễ dàng hơn và thích hợp hơn - không yêu cầu hỗ trợ javascript – FluffyKitten

+0

@FluffyKitten, js một phần có chức năng giống với mã OP, nhưng không có javascript nội tuyến. – fcalderan

+0

độ mờ: 0,50; - không hoạt động trong IE8 – Roman

0

Hộp chọn đơn giản, chỉ css để chuyển sang màu xám bị tắt.

input[type=checkbox][disabled] { 
    filter: invert(25%); 
} 
+1

Có đó là một giải pháp có thể ngay bây giờ (nó không phải là khi điều này đã được hỏi 5 năm trước). Tuy nhiên, điều quan trọng cần lưu ý là các bộ lọc css không được hỗ trợ trong IE11 – FluffyKitten

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