2011-02-02 31 views

Trả lời

6

$("div[contentEditable]").blur() để làm mờ tất cả nội dungCác yếu tố có thể chỉnh sửa.

$("#elementId").blur() để làm mờ phần tử theo id.

+0

Tôi nghĩ, về mặt kỹ thuật, nó phải là * $ ('div [contentEditable = "true"]'). Blur() * – KOGI

+0

'div [contentEditable]' kiểm tra sự hiện diện của thuộc tính contentEditable, 'div [contentEditable = "true"] 'kiểm tra nếu thuộc tính đó được đặt thành true. Hoặc sẽ làm việc trong hầu hết các trường hợp. Bạn sẽ chỉ phải rõ ràng nếu bạn đặt rõ ràng contentEditable thành một số giá trị khác để vô hiệu hóa nó. –

+1

'div [contentEditable! =" False "]' có thể là lựa chọn tốt nhất của bạn để đơn giản. – zzzzBov

3

Giải pháp được đề xuất bởi Roman Resh không hoạt động khi bạn nhấp vào phần tử và nhấn enter ngay sau đó. Nó sẽ không mờ nhưng tạo ra dòng-break/divs.

Có thể ngăn chặn hoàn toàn hành vi này.

See this fiddle

$('<div class="temp-contenteditable-el" contenteditable="true"></div>') .appendTo('body').focus().remove();

34

tôi sẽ thêm một giải pháp mà được dựa trên câu trả lời của OMNICON đó là chính xác BTW. Tôi có forked his fiddle and updated it.

Bí quyết là để loại bỏ tất cả các dãy sau khi gọi mờ:

$(".editable").blur(); 
window.getSelection().removeAllRanges(); 
+0

Điều này làm việc cho tôi, cảm ơn. Omnicon đã không làm việc cho tôi, một phần vì nó cuộn toàn bộ tài liệu xuống đáy khi được gọi. – MSC

+0

RemoveAllRanges() hoạt động thực sự tốt, trước đây tôi sử dụng ony $ (". Editable"). Blur(); và phần tử contentEditable vẫn không loại bỏ vùng chọn. Cảm ơn! –

+0

Cảm ơn bạn đã giải pháp! 'window.getSelection(). removeAllRanges();' làm thủ thuật - không có div có thể chỉnh sửa vẫn hoạt động và 'e.codeKey == 13' tiếp theo trả về khi thêm một dòng mới. –

0

Phụ thêm cho tất cả các câu trả lời, khi sử dụng một cái gì đó giống như

$(".editable").blur() 

suy nghĩ về chỉ làm mờ tập trung, như

$(".editable:focus").blur() 

Nếu không, bạn có thể tham gia các chương trình tốt đẹp đôi khi

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