所以我有任意数量的表单,每个表单基本上都是这样构成的:
{
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_items
和notes
子部分。
这不是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