18

フォームがあり、フォーム内に text_field_tag があります。このように書かれている...

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

ただし、HTML が生成されると、これはページ ソースに返されます...

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

なぜこれを行うのですか?プレースホルダーが機能するように修正するにはどうすればよいですか?

4

1 に答える 1

38

text_field_tagの2番目のパラメーターは値です。空にするためにnilを与えます:

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

そして、デフォルト値を持つ文字列を指定します。

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

onclickイベントを追加して、jQueryで空にします。

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

2016年の編集:

現在、ほとんどのブラウザはHTML 5placeholderをサポートしているため、これをよりクリーンな方法で行うことができます。

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

jsFiddleリンク

于 2012-11-20T20:59:04.737 に答える