2012-08-04 41 views
8

Tôi đã tạo đầu vào theo mã bên dưới.Trình giữ chỗ không biến mất khi lấy nét trong Chrome

<div> 
    <form id="me" runat="server"> 
    <input id="stuff" type="text" placeholder="Type here" runat="server" /> 
    </form> 
</div> 

Như dự kiến, khi tôi bắt đầu nhập văn bản trình giữ chỗ biến mất. Nó hoạt động như trong trình duyệt Burning Cat nhưng không có trong trình duyệt Metal Shiny. Điều gì gây ra nó (phong cách, thẻ máy chủ, các công cụ khác ...)? Có thể làm gì về nó?

Trả lời

10

Firefox và chrome (và safari) hành động khác nhau trên trình giữ chỗ HTML5. Nếu bạn muốn chrome biến mất giữ chỗ trên tập trung, bạn có thể sử dụng sau đây kịch bản:

$('input:text, textarea').each(function(){ 
    var $this = $(this); 
    $this.data('placeholder', $this.attr('placeholder')) 
     .focus(function(){$this.removeAttr('placeholder');}) 
     .blur(function(){$this.attr('placeholder', $this.data('placeholder'));}); 
}); 
+5

Tôi muốn xét thấy hành vi này là một lỗi. Ý tôi là, nếu tôi cần thêm một số JS để làm cho trình giữ chỗ biến mất, nó phải được gọi là một work-around. Hay là có lý do chính đáng tại sao nó cư xử theo cách đó? –

+6

Tôi thực sự thích cách làm chỗ dành cho Chrome. Nó cho phép bạn sử dụng văn bản giữ chỗ như nhãn trường biểu mẫu EVEN nếu trang của bạn tải được tập trung vào một trong các trường. – xamde

+3

Bộ chọn phải là '$ ('[trình giữ chỗ]')' vì có nhiều loại đầu vào không phải là văn bản hoặc văn bản (email, v.v.) và có thể có trình giữ chỗ. Ngoài ra jQuery mới không thích (không may) bộ chọn ': text'. – Rudy

0

Bạn có thể sử dụng plugin của placeholder jquery: placeholderFix. Với plugin này, thẻ giữ chỗ sẽ hoạt động trên cùng một cách trong tất cả các trình duyệt, cũng trong các trình duyệt không hỗ trợ nó.

28

tôi đi qua cùng một vấn đề ngày hôm nay và tôi đã đưa ra một thuần CSS giải pháp hack:

input:focus::-webkit-input-placeholder { 
    color: transparent; 
} 
+4

+1 cho sự sáng tạo nhưng tôi cần chỉ ra rằng - trong khi tôi ** thực sự thích ** cách tiếp cận - nó không phải là một giải pháp. Đó là một công việc xung quanh. Tôi vẫn cho rằng đó là lỗi trong chrome. :) –

+0

Ngoài ra, bạn đã bỏ lỡ cú pháp cho thẻ ngôn ngữ. Nó được cho là * lang-css * bên trong và hai dấu gạch ngang "* - *" ở cuối. Tôi sửa chữa sytax và bây giờ câu trả lời của bạn trông thậm chí còn tốt hơn! –

+0

Tôi hoàn toàn đồng ý. Tôi đã xem xét việc sử dụng từ * hack * thay vì * giải pháp * nhưng vì một lý do nào đó đã xảy ra với từ sau. Bây giờ tôi đã chỉnh sửa bài đăng để phản ánh điều đó. Tôi đã thử các biến thể khác nhau của thẻ cú pháp nhưng dường như không có gì hoạt động. Bây giờ tôi nghĩ rằng nó có thể đã làm việc nhưng tôi đã không nhận thấy bởi vì các màu sắc đều rất tối. Cảm ơn đã giúp đỡ. –

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