Ruby on Rails: Làm cách nào để thêm văn bản giữ chỗ vào f.text_field?


144

Làm cách nào tôi có thể thêm placeholdervăn bản vào f.text_fieldcác trường 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?


HTML5 hỗ trợ này. Trong khi đó, có các giải pháp javascript .
ghoppe

3
Tôi đề nghị thêm câu trả lời của nslocum thay vì của tôi. Điều này đúng với Rails 3.
Chuck Callebs

Câu trả lời:


269

Với đường ray> = 3.0, bạn chỉ cần sử dụng placeholdertùy chọn.

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

4
Thuộc tính "giữ chỗ" chỉ được hỗ trợ bởi các trình duyệt hỗ trợ HTML5, loại bỏ các trình duyệt như Internet Explorer.
travis-146

1
URL chính xác cho sửa lỗi jQuery là hagenburger.net/BLOG/ từ
szeryf

1
@KDP: Có vẻ giống như trong Rails 2, mặc dù bạn có thể cần cú pháp thuộc tính cũ:f.text_field :attr, :placeholder => "placeholder text"
mwfearnley

Có thể thêm một văn bản dài - có thể là một tệp html riêng - như một trình giữ chỗ? Tôi đang cố gắng cung cấp một mẫu để người dùng viết nội dung của họ.
sofarsophie

32

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

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

15

Đối với những người sử dụng Rails (4.2) Internationalization (I18n):

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

f.text_field :attr, placeholder: true

và trong tệp cục bộ của bạn (ví dụ: en.yml):

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

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

2

Đâ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
Nó khác với câu trả lời @nslocum được chấp nhận như thế nào?
mlt

@mlt Câu trả lời được chấp nhận đã được cập nhật tương tự sau khi cung cấp câu trả lời này.
Abhilash

2

Tôi đã thử các giải pháp ở trên và có vẻ như trên đường ray 5. * mặc định thứ hai là giá trị của biểu mẫu đầu vào, điều làm việc cho tôi là:

text_field_tag :attr, "", placeholder: "placeholder text"

1

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

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

Trong Javascript của bạn (giả sử jquery ở đâ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=='Search The Huffington Post')this.value=''" value="Search The Huffington Post"Có vẻ như là một cách tiếp cận tốt.
Nathan
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.