2012-11-20 27 views
17

Tôi có một biểu mẫu và bên trong biểu mẫu có một text_field_tag. Nó được viết như thế này ...Trình giữ chỗ thẻ trường văn bản trả về giá trị

<%= text_field_tag "search", :placeholder => 'Enter search term...' %> 

Tuy nhiên, khi HTML được tạo ra này trả về trong mã nguồn trang web ...

<input id="search" name="search" type="text" value="{:placeholder=&gt;&quot;Enter search 
term...&quot;}" /> 

Tại sao nó làm điều này và làm thế nào để sửa chữa nó để trình giữ chỗ đó hoạt động?

Trả lời

36

Tham số thứ hai của text_field_tag ​​là giá trị. Give it nil để có nó rỗng:

<%= text_field_tag "search", nil, :placeholder => 'Enter search term...' %> 

Và cho nó một String để có một giá trị mặc định:

<%= text_field_tag "search", 'Enter search term...' %> 

Thêm một sự kiện onclick để trống nó với jQuery:

<%= text_field_tag "search", 'Enter search term...', :onclick => 'if($(this).val()=="Enter search term..."){$(this).val("");};' %> 

Chỉnh sửa 2016:

Hiện nay, hầu hết các trình duyệt hiện hỗ trợ HTML 5 placeholder, cho phép chúng tôi thực hiện s theo một cách sạch hơn:

<%= text_field_tag 'search', nil, placeholder: 'Enter search term' %> 
# which produces the following HTML: 
<input type="text" value="" placeholder="Enter search term"> 

jsFiddle link

+0

Silly sai lầm của tôi. Cảm ơn. – jason328

+0

Bạn được chào đón :) Bạn có thể kiểm tra bài viết của tôi là câu trả lời được không? – MrYoshiji

+0

Vâng xin lỗi. Tôi đã đi đến khi tôi đang chơi với một số css và bị phân tâm. – jason328

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