如何在JQuery中合并两个或多个类似的表单?

时间:2016-11-24 02:13:00

标签: javascript jquery forms coffeescript

所以我有任意数量的表单,每个表单基本上都是这样构成的:

{ 
  budget_items: 
  { 
    item_1_id: {values}, 
    item_2_id: {values}, 
    item_3_id: {values} 
  }, 
  notes: 
  { 
    note_1_id: val, 
    note_2_id: val
  }
}

在提交时,我想将所有已更改的表单合并到一个单元中,提取任何额外的真实性令牌,并将其提交给服务器。

我现在拥有的是一个jQuery选择器,它包含所有已更改的表单。如何在提交之前有效地将这些表格合并在一起?

我有JQuery,这是用CoffeeScript编写的,但语法无关的帮助非常受欢迎。

这是我到目前为止的代码:

getAllModals = ->
  scope.find('.modal').filter ->
    shouldSubmitModal($(this))

getFormsFromModals = ->
  getAllModals().map ->
    $(this).find('.modal-body form').first()

scope.on 'submit', '#allCustomerForm', (event) ->
  formsToSubmit = getFormsFromModals()
  str = ''
  formsToSubmit.each ->
    str += $(this).serialize()
  console.log str
  return false

这天真地将每个表单对象放在另一个表单对象旁边,在序列化之前它没有正确合并budget_itemsnotes子部分。

这不是this question的重复。我有两个以上的表单,并且无法对serialize的调用进行硬编码,因为需要序列化的表单是动态的。我还尝试以比简单附加更精细的方式合并表单。

更新:这是我尝试使用serialize,它只是将表单附加在一起而不是进行深度合并。

scope.on 'submit', '#allCustomerForm', (event) ->
  formsToSubmit = getFormsFromModals()
  formIDs = ['#allCustomerForm']
  formsToSubmit.each ->
    formIDs.push('#' + $(this).attr('id') + ' :input')
  console.log $(formIDs.join(', ')).serialize()
  false

0 个答案:

没有答案