2012-02-24 7 views
0

私はスタイルのFacebookの - オートコンプリート種類のタイプとフォーム入力フィールドを作成jQueryプラグインの要件と形式を持っていますので、しかし、JavaScriptをせずにフォームが動作しない、それがうまく機能Railsフォームをロードする条件としてのJavaScript?

<%= javascript_include_tag "form_prettify_library" %> 

<div class="box"> 
    <ul id="first_form" class="tagit"> 
     <li class="prettify-new"></li> 
    </ul> 
    <%= form_for @brand do |f| %> 
    <%= f.hidden_field :tag_list, :value => @brand.tags_from(current_user).join(", "), 
            :id => "mytaglist" %> 
    <%= f.submit "Add tags" %> 
    <%= f.error_messages %> 
    <% end %> 
</div> 

を上のフォームはhidden_​​fieldと目に見える入力フィールドしかありません(入力フィールドはタグ内のプラグインによって作成されます)。これはモバイルデバイス上でJavaScriptなしで動作するために必要です。 JavaScriptがロードされている場合は上記のコードを表示する方法はありますか?そうでない場合は、以下のコードが表示されます。

<div class="box"> 
    <%= form_for @brand do |f| %> 
    <%= f.label :tag_list, "Your tags" %> 
    <%= f.text_field :tag_list, :value => @brand.all_tags_list %> 
    <%= f.submit "Add tags" %> 
    <% end %> 
</div> 

答えて

3

はい、使用CSSは、デフォルトではそれを隠す、とJSが

HTML

<body class="no_js"> 
<script type="text/javascript"> 
(function() { 
    var body = document.getElementsByTagName("body")[0]; 
    body.className = body.className.replace(/\bno_js\b/, " js ") 
}()) 
</script> 

CSS

.no_js .jsForm, 
.js .no_jsForm { 
    display:none; 
} 

.js .jsForm, 
.no_js .no_jsForm { 
    display: block; 
} 
を有効にした場合、サイトにクラスを追加します
+0

これは実現可能ですが、私はより多くのRails-like eソリューション。 – Simpleton

+0

これは、必要なものを達成するための標準的な方法です。 jsが利用可能かどうか(クライアント側)を検出するためのレール(サーバー側)を取得することは、別の要求をサーバーに送り返さなければ不可能なので、唯一の選択肢は非js形式を提供し、これは利用可能ですが、全体的に遅くなります。私はあなたがそれを扱うもっとレールの方法(私はRubyやRailsを知らない)が何を意味しているのかは分かりませんが、jsが有効になっているかどうかをサーバーサイドのアプリが事前に知ることはできません - ブラウザは送信しませんこの情報はhttp要求に含まれます。 – wheresrhys

+0

私は何らかの種類のサーバー側の検出、おそらくJS互換性を嗅ぐWURFL実装を望んでいました。これで十分です。 – Simpleton

関連する問題