フォームがあり、フォーム内にtext_field_tagがあります。このように書かれています...
<%= text_field_tag "search", :placeholder => 'Enter search term...' %>
ただし、HTMLが生成されると、これはページソースに戻ります...
<input id="search" name="search" type="text" value="{:placeholder=>"Enter search
term..."}" />
なぜこれを行うのですか?プレースホルダーが機能するように修正するにはどうすればよいですか?
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("");};' %>
現在、ほとんどのブラウザは HTML 5 placeholder
をサポートしています。これにより、これをよりクリーンな方法で実行できます。
<%= text_field_tag 'search', nil, placeholder: 'Enter search term' %>
# which produces the following HTML:
<input type="text" value="" placeholder="Enter search term">