2010-07-15 38 views
120

Làm cách nào để thêm văn bản placeholder vào các trường f.text_field của mình để văn bản được viết sẵn theo mặc định và khi người dùng nhấp vào bên trong các trường, văn bản sẽ biến mất - cho phép người dùng nhập văn bản mới?Ruby on Rails: Làm thế nào để thêm văn bản giữ chỗ vào một f.text_field?

+3

Tôi đề xuất thêm câu trả lời của nslocum thay vì câu trả lời của tôi. Anh ấy là đúng cho Rails 3. –

+0

HTML5 Hỗ trợ điều này. Trong thời gian chờ đợi, có [giải pháp javascript] (http://www.htmlcenter.com/blog/form-input-placeholder-text/). – ghoppe

Trả lời

240

Với đường ray> = 3.0, bạn chỉ có thể sử dụng tùy chọn placeholder .

f.text_field :attr, placeholder: "placeholder text" 
+4

Thuộc tính "trình giữ chỗ" chỉ được trình duyệt hỗ trợ HTML5 hỗ trợ, bỏ qua các trình duyệt như Internet Explorer. –

+1

URL chính xác cho sửa lỗi jQuery là http://www.hagenburger.net/BLOG/HTML5-Input-Placeholder-Fix-With-jQuery.html – szeryf

+0

Cách này hoạt động với Rails 2? – KDP

0

Trong mẫu tầm nhìn của bạn, đặt một giá trị mặc định:

f.text_field :password, :value => "password" 

Trong Javascript của bạn (jquery giả định ở đây):

$(document).ready(function() { 
    //add a handler to remove the text 
}); 
+1

Trường tìm kiếm của Huffington Post sử dụng bit JS này bên trong phần tử đầu vào: 'onfocus =" if (this.value == 'Tìm kiếm bài Huffington') this.value = '' "value =" Tìm kiếm bài Huffington " Có vẻ như một cách tiếp cận tốt. – Nathan

28

Trong Rails 4 (Sử dụng HAML):

=f.text_field :first_name, class: 'form-control', autofocus: true, placeholder: 'First Name' 
1

Đây là một cú pháp sạch hơn nhiều nếu sử dụng rails 4+

<%= f.text_field :attr, placeholder: "placeholder text" %> 

Vì vậy rails 4+ bây giờ có thể sử dụng cú pháp này thay vì cú pháp băm

+1

Khác với câu trả lời @nslocum được chấp nhận như thế nào? – mlt

11

Đối với những người sử dụng Rails (4.2) Quốc tế hóa (I18n):

Đặt giữ chỗ thuộc tính là true:

f.text_field :attr, placeholder: true 

và trong tập tin địa phương của bạn (ví dụ. vi.yml):

en: 
    helpers: 
    placeholder: 
     model_name: 
     attr: "some placeholder text" 
+0

Cảm ơn bạn đã làm việc. Tôi đã không đặt 'placeholder: true'. Sau khi thiết lập như bạn mô tả nó đã làm việc. – Hendrik

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