发布字段数组w

时间:2017-01-22 05:12:34

标签: javascript jquery ajax twitter-bootstrap

我在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
      {

      }
    }
  }
  )
});

1 个答案:

答案 0 :(得分:1)

为什么不迭代发票中的项目?
首先给项目一个不同的类名(.invoice-item) 然后对项目进行操作并将它们推入一个数组,然后您可以将其作为参数传递给ajax调用。

var invoice_items = [];
$(".invoice-item").each(function(){
  invoice_items.push({name: $(this).val(),
  description: $(this).parent().prev().children().val()});
});

正如您所看到的,可以更轻松地完成遍历,但这只是为了解决问题。