2012-09-24 10 views
13

私は定期的にsimpleformフォームシンプルフォーム:ラベルを削除し、ラベルi18nを使用してプレースホルダに置き換えることは可能ですか?

= simple_form_for [:hq, @team, @order] do |f| 
    .tickets 
    = f.select :tickets, :aaa => "aaa" 
    = render "ticket" 


    .details 
    .left 
     = f.input :address1 
     = f.input :address2 
     = f.input :state 
     = f.input :country 
     = f.input :email 
    .right 
     = f.input :comments 

を生成しようとしている。しかし、私は、入力がちょうどタイトルプレースホルダに「ライン1アドレス」、ラベルがレンダリングされないようにします。

私はこれをf.input :address1, :placeholder => "whatever", :label => ""で行うことができますが、ラッパーで構成可能で、プレースホルダーではなくi18n値のフォームラベルを使用したいと思います。

+7

使用:ラベル=> falseをしていない:ラベル=> ""、後者はまだDOMでのラベル・タグを生成します。 – mmvie

+0

私は[これは]あなたが探している答えだと思います。 [1]:http://stackoverflow.com/a/18199780/186145 – wspruijt

答えて

-2

あなたはここでは、JavaScriptを使用したい場合は仕事をしてjQueryの抜粋です。この場合のJSを使用して主な利点は、結果はスクリーンリーダー対応のままであることである

$.each($(".left .input"), function() { 
    var label = $("label",$(this)).text(); 
    $("label",$(this)).hide(); 
    $("input",$(this)).attr("placeholder",label); 
}); 

(彼らが読んでます彼らはjsを実行しないため、ラベル)。

+6

私はこれに反対します。これを簡単な形式で、そしてjavascriptなしで実現する方法があります。 – Senjai

+0

@Senjaiの古いコメント私は知っていますが、代わりにこれをどうやってやるのかについての詳細やリンクに行くことができますか? – Huw

+1

この解決策を無視する謝罪は、上記の複製リンクを介して行われました。[here](https://stackoverflow.com/questions/18077082/how-to-use-placeholders-instead-of-labels-in-simple-form/18199780)を参照してください。 #18199780) – Huw

21

次の操作を実行してみてください。

f.input :address1, placeholder: "Address Line 1", label: false 
関連する問題