0

私はnested_formとその上にこのフォームを持っています:

  <%= f.fields_for :uploads do |file| %>
      <%= file.label 'File name :'%>
      <%= file.text_field :name, :size => "19", :id=>"field" %>    
      <%= file.file_field :file if file.object.new_record? %> 
      <p>
      <%= file.link_to_remove "Delete" %>
  <% end %>

  <%= f.link_to_add "Add", :uploads, :class=>"btn" %>

ユーザーがファイル (名前と拡張子のみ) を選択したときに text_field の「名前」を入力したいのですが、1 つだけでなく多くの file_fields を持つことができるため、javascript でそれを行う方法がわかりません。

私を助けてくれませんか?

4

2 に答える 2

0

このようにしてみてください:

 <%= f.fields_for :uploads do |file| %>
    <%= file.label 'File name :'%>
    <%= text_field_tag :name, nil, :size => 19 %>    
    <%= file.file_field :file if file.object.new_record? %> 
    <%= file.link_to_remove "Delete" %>
  <% end %>

  <%= f.link_to_add "Add", :uploads, :class=>"btn" %>
于 2013-02-26T16:18:36.577 に答える
0

JSでこれを行いたい場合、私が思いついたアプローチは基本的に、入力したい値でデータ属性を入力に設定します。

ビューがレンダリングされると、必要な入力にデータ属性が埋め込まれます。ドキュメントの準備ができたら、jQuery を使用して、その特定のデータ属性を持つすべての入力を選択し、それらの値を設定できます。

あなたの見解では:

<%= f.fields_for :uploads do |file| %>
    <%= file.label 'File name :'%>
    <%= file.text_field :name, :size => "19", :id=>"field", :data => { "for-auto-fill" => "some value" } %>    
    <%= file.file_field :file if file.object.new_record? %> 
    <p>
    <%= file.link_to_remove "Delete" %>
<% end %>

<%= f.link_to_add "Add", :uploads, :class=>"btn" %>

あなたのJavaScriptで:

/* Select all elements with a 'for-auto-fill' data attribute */
$('[for-auto-fill]').each(function(){
  /* For each one, set it's value to the value that you set on the data attribute */
  $(this).val(($(this).data().forAutoFill));
});
于 2013-02-26T16:34:07.143 に答える