我在bootstrap 3上有动态字段。表单有三个部分,显示在选项卡中。
表单标签会自动删除模式,因此我的字段已经没有了。我可以使用jquery属性选择器$("输入[name =' invoice-date']")。val()发布剩余的值。但是,我的困境在于:
<div class="tab-pane" id="tab_2">
<div class="row">
<br/>
<div class="form-group">
<div class="col-lg-2">
<label>#</label>
</div>
<div class="col-lg-7">
<label>Description</label>
</div>
<div class="col-lg-3">
<label>Amount</label>
</div>
</div>
<div class="form-group">
<div class="col-lg-2">
<label>Item 1.</label>
</div>
<div class="col-lg-7">
<input type="text" class="form-control" name="items[1][description]" />
</div>
<div class="col-lg-3">
<input type="text" class="form-control" name="items[1][amount]" />
</div>
</div>
<div class="form-group">
<div class="col-lg-2">
<label>Item 2.</label>
</div>
<div class="col-lg-7">
<input type="text" class="form-control" name="items[2][description]" />
</div>
<div class="col-lg-3">
<input type="text" class="form-control" name="items[2][amount]" />
</div>
</div>
<div class="form-group">
<div class="col-lg-2">
<label>Item 3.</label>
</div>
<div class="col-lg-7">
<input type="text" class="form-control" name="items[3][description]" />
</div>
<div class="col-lg-3">
<input type="text" class="form-control" name="items[3][amount]" />
</div>
</div>
<div class="form-group">
<div class="col-lg-2">
<label>Item 4.</label>
</div>
<div class="col-lg-7">
<input type="text" class="form-control" name="items[4][description]" />
</div>
<div class="col-lg-3">
<input type="text" class="form-control" name="items[4][amount]" />
</div>
</div>
</div>
</div>
如果考虑到它的数组,我如何发布项目值?如果我能够将字段括在标记中,那么简单的.serialize()就可以了。
到目前为止,这是我的ajax帖子:
$('#gen-invoice').on('click',function()
{
$.ajax(
{
url: 'path("create-invoice")',
data: { invoiceDate: $("input[name='invoice-date']").val(), job: $("input[name='inv-job-id']").val(), att: $("input[name='att']").val(), summary: $("input[name='inv-remarks']").val(), additional: $("input[name='inv-add']").val(), vattable: $("input[name='inv-vattable']").val(), items: $("input[name='items[]']").serialize(), deductions: $("input[name='deductions[]']").serialize() },
success: function(response)
{
if(response.response == 200)
{
window.open(response.path,'_blank');
}
else
{
}
}
}
)
});
答案 0 :(得分:1)
为什么不迭代发票中的项目?
首先给项目一个不同的类名(.invoice-item)
然后对项目进行操作并将它们推入一个数组,然后您可以将其作为参数传递给ajax调用。
var invoice_items = [];
$(".invoice-item").each(function(){
invoice_items.push({name: $(this).val(),
description: $(this).parent().prev().children().val()});
});
正如您所看到的,可以更轻松地完成遍历,但这只是为了解决问题。