2012-11-20 15 views
17

Ho un modulo e all'interno del modulo c'è un text_field_tag. È scritto come questo ...Testo campo Tag Segnaposto restituito come valore

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

Tuttavia, quando il codice HTML viene generato questo ritorna nel sorgente della pagina ...

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

Perché sta facendo questo e come posso risolvere il problema in modo quel segnaposto funziona?

risposta

36

Il secondo parametro di text_field_tag ​​è il valore. Dategli nil averlo vuoto:

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

e dare una stringa di avere un valore di default:

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

Aggiungi un evento onclick per svuotarlo con jQuery:

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

Modifica 2016:

Al giorno d'oggi, la maggior parte dei browser ora supporta lo HTML 5 placeholder, che ci consente di fare thi s in un modo più pulito:

<%= 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

stupido errore da me. Grazie. – jason328

+0

Prego :) Puoi controllare il mio post come risposta per favore? – MrYoshiji

+0

Sì, mi dispiace. Stavo andando quando stavo giocando con alcuni css e mi sono distratto. – jason328

Problemi correlati