javascript - 动态添加字段到嵌套表单 onchange of select

标签 javascript jquery ruby-on-rails forms nested-forms

我在点击 add_fields 和 remove_fields 时成功地添加和删除了字段。但是现在我想根据父表单中下拉列表的值一次添加 N 次字段。 怎么做有什么想法吗? 这是我的 parent 表格

= f.select :total_section, (0..10),{}, :onchange => "generate_form(this.value)"
    .field
      = f.fields_for :score_sheet_sections do |s|
        %div.fields
          = render 'score_sheet_section_fields', :f => s
      %div.fields
        = link_to_add_fields "Add Score Sheet Sections", f, :score_sheet_sections

在我的生成表单函数中,我只有这个:

function generate_form(number) {
      for (i = 1; i <= number; i++) {
          console.log(i);
      }
  }

我想选择部分的数量(比如 N 或将其存储在 N 中)然后添加 score_sheet_sections N 次

最佳答案

select number of sections(say N or store it in N) and then add score_sheet_sections N times)

我不知道你目前是如何处理这个问题的,但如果你使用与 this 类似的方法(I.E 使用 Ajax 调用单独的方法) ,您可能希望在方法中包含一个参数,它允许您根据参数返回行数,如下所示:

--

路线

#config/routes.rb
resources :controller do
   collection do
      get :new_field
   end
end

--

Controller

#app/controllers/your_controller.rb
respond_to :js, only: :new_field

def new_field num = 1 #-> arg defaults to 1
   num = params[:num] if params[:num]

   @model = Model.new
   @model.nested_categories.build

   render "controller/form", num: num
end

#app/views/controller/new_field.html.erb
<%= form_for @model do |f| %>
    <%= render partial: "field", locals: { num: parmas[:num], f: f } %>
<% end %>

#app/views/controller/_field.html.erb
<% num.each do |i| %>
    <%= f.fields_for :association, child_index: Time.now.to_i do |a| %>
         <%= a.text_field :attribute %>
    <% end %>
<% end %>

--

** JS **

= f.select :total_section, (0..10),{}, :onchange => "generate_form(this.value)"

#app/assets/javascripts/application.js.erb
var generate_form = function( num ){
   $.ajax({
       url: "new_fields/?num=" + num,
       type: "GET",
       success: function(data) {
           //append returned data to view
       }          
   })
}
  • 根据 this SO post ,您可以将数据附加到 GET 请求中的 URL

这将向您的 ajax 请求返回一个构建的表单,允许您解析它并附加到 View

关于javascript - 动态添加字段到嵌套表单 onchange of select,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23863808/

相关文章:

javascript - 如何将 jquery 插件应用于新创建的元素

javascript - 使用 React + Redux 获取所有选中的复选框及其相关数据

php - 无需刷新的 Ajax 发布

php - AJAX 聊天框向上滚动问题

javascript - 将部分 View 注入(inject) div 标签

javascript - 使用 jQuery 按字母顺序对列表项进行排序 - 然后按数字对特殊项进行排序

javascript - 我正在尝试通过单击 <li> 菜单将 border-bottom 更改为 'none'

javascript - jQuery .html() 无法按预期工作

ruby-on-rails - 在 Rails 中为 http 请求强制使用 SSL

ruby-on-rails - 服务器 IP 更改后出现和关闭错误 324 (net::ERR_EMPTY_RESPONSE)