Javascript 如果是文件\字段,则填写字段名

Javascript 如果是文件\字段,则填写字段名,javascript,ruby-on-rails,ruby-on-rails-3,Javascript,Ruby On Rails,Ruby On Rails 3,我有一个嵌套的表格,上面有这个表格: <%= 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?

我有一个嵌套的表格,上面有这个表格:

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

“19”,:id=>“字段”%>

“btn”%>
我希望在用户选择文件时填充文本字段“name”(仅包括名称和扩展名),但我不知道如何使用javascript实现这一点,因为我可以有很多文件字段,而不仅仅是一个

你能帮帮我吗?

试试这样:

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

19 %>    
“btn”%>

如果你想用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" %>

很抱歉JS没有正确突出显示评论。我真的不知道如何绕过它,但我认为内联评论会更清晰。你打算选择一个正确的答案吗?
/* 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));
});