2012-12-07 31 views
9

tôi đã tự hỏi về một số hành vi lạ trong Internet Explorer 10. Trên trang của tôi, tôi thêm một vùng văn bản với jquery, bao gồm thuộc tính giữ chỗ. Một cái gì đó như thế này:Thuộc tính trình giữ chỗ HTML5 trên Textarea qua jQuery trong IE10

$('body').append($('<textarea placeholder="Placeholder..."></textarea>')); 

Thuộc tính trình giữ chỗ hoạt động hoàn toàn tốt trong IE10 thường ... ngoại trừ trong trường hợp này. Tôi đã thử nghiệm nó với các yếu tố là đã có trên trang trong fiddle này:

http://jsfiddle.net/Aqnt5/1/

Như bạn có thể thấy, một textarea (một sự bổ sung tự động) đối xử với thuộc tính placeholder như một giá trị thực tế - sự gây phiền nhiễu nhất hành vi của tôi có thể tưởng tượng ...

Có ai biết về hiệu ứng này và cũng có thể là cách giải quyết không? Cảm ơn trước!

EDIT

Tôi cũng chỉ nhận ra rằng nó hoạt động như mong đợi, sau khi bạn loại bỏ giá trị bằng tay. Bạn cũng có thể xóa nó qua jQuery.val('') để làm cho nó hoạt động. Tôi thực sự bối rối bởi hành vi này ... Nhưng đây phải là một 'cách giải quyết' phù hợp. Xem fiddle này: http://jsfiddle.net/Aqnt5/5/

+1

Tôi vừa đăng câu hỏi tương tự ở đây: http://stackoverflow.com/questions/23375208/ie11-jquery-1-8-3-dynamically-added-textarea-with-placeholder-has-text-set -to/23375209 # 23375209. Sự cố sẽ biến mất nếu bạn ** cập nhật jQuery ** lên phiên bản **> 1.8.3 **. – Oliver

Trả lời

18

Đáng tiếc là tôi không có IE10 để kiểm tra điều này, nhưng công trình này ở khắp mọi nơi khác;

$('body').append('<textarea></textarea>'); 
$('textarea').attr('placeholder', 'placeholder'); 

Và chỉ cần kích đúp kiểm tra xem DOCTYPE của bạn là chính xác cho HTML5

Đây là một one-liner (chia thành nhiều dòng ở đây để làm cho nó rõ ràng hơn) mà bạn cũng có thể làm -

$('body') 
    .append('<textarea></textarea>') 
    .find('textarea') 
    .attr('placeholder', 'placeholder'); 
+2

cảm ơn Jay! Cách thiết lập trình giữ chỗ của bạn sau đó hoạt động hoàn toàn tốt trong IE10. Ngoài ra, tôi tìm thấy một cách giải quyết khác bằng cách loại bỏ giá trị với jQuery (xem câu trả lời của tôi). –

-1

placeholder là một thuộc tính dè dặt của HTML5, từ HTML5 vẫn chưa được xác định (và những thay đổi có thể xảy ra với nó), Sau đó, không phải tất cả các trình duyệt hỗ trợ tất cả các chức năng (và không cho tôi bắt đầu về IE)

để tham khảo: http://www.w3schools.com/html5/att_textarea_placeholder.asp

+1

cảm ơn Dementic.Tôi biết về sự không tương thích với IE - vẫn còn, thuộc tính giữ chỗ làm việc cho IE10 hầu hết các lần. nó chỉ là, khi tôi chèn nó thông qua jQuery, nó không được xử lý một cách chính xác. Tôi đã tự hỏi về những gì thực sự làm cho sự khác biệt ... –

+0

IE có xu hướng có rất nhiều lỗi khi bạn đang cố gắng để làm một số "phím tắt". đó là từ kinh nghiệm cá nhân của tôi. – Dementic

3

Fiddle: http://jsfiddle.net/Aqnt5/5/

Bạn có thể loại bỏ các giá trị với jQuery, để làm cho nó cư xử một cách chính xác:

$('body').append($('<textarea placeholder="Placeholder..."></textarea>').val('')); 

Tôi không biết tại sao họ đặt giữ chỗ như một giá trị ở nơi đầu tiên ...

+0

Điều này sẽ không được khuyến khích. ngay cả do nó hoạt động, @Jay Blanchard trả lời là cách chính xác để làm điều đó. – Dementic

0

Tôi đã nhìn thấy điều tương tự xảy ra khi sử dụng jQuery 1.8.3: http://jsfiddle.net/wE577/1/.

Nhưng nếu bạn sử dụng phiên bản cao hơn, vấn đề sẽ biến mất: http://jsfiddle.net/wE577/2/.

Tôi không có đầu mối nào theo cách mà jQuery gây ra lỗi này, nhưng bản cập nhật sẽ sửa lỗi đó.

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