ajax jquery表单不发送有关更改的数据

时间:2017-03-13 14:02:45

标签: jquery ajax forms codeigniter

我为购物车/订单中的每件商品创建表单,即循环中的多个表单并为其提供唯一的ID(' id' =>' cart _'。$ line )(cart_1,cart_2)。并为每个表单创建一个循环更新链接。代码

 echo form_open($controller_name."/edit_item/$line", array('class'=>'form-horizontal line-item', 'id'=>'cart_'.$line));
echo form_input(array('name'=>'quantity','value'=>$item['quantity'],'size'=>'2', 'id'=>'quantity','class'=>'form-control cartline', 'data-form' => $line));
echo form_input(array('name'=>'discount','value'=>$item['discount'],'size'=>'3',  'id'=>'discount', 'class'=>'form-control cartline', 'data-form' => $line));?>
<a href="javascript:document.getElementById('<?php echo 'cart_'.$line ?>').submit();" id="anchor" title=<?php echo $this->lang->line('sales_update')?>  >

我希望我的表单通过ajax提交onChange数量,折扣字段。 我正在尝试,但形成不发送onChange

    <script>
$(document).ready(function(){
   $(".line-item").submit(function(event) { 
    event.preventDefault();
    var line_form = $( this ),
        url = line_form.attr( 'action' );
        $.post(url,
        {
          quantity:$('quantity').val(),
          discount: $('discount').val()
        },
        function(data,status){
            alert("Data: " + data + "\nStatus: " + status);
        });
    });
});
</script>

1 个答案:

答案 0 :(得分:0)

您需要使用更改

事件
<script>
$(document).ready(function(){
   //Here the element you want to trigger in change to send the form (quantity, disccount,...)
   $(".quantity").change(function(event) { 
    event.preventDefault();
    var line_form = $( this ),
        url = line_form.attr( 'action' );
        $.post(url,
        {
          quantity:$('quantity').val(),
          discount: $('discount').val()
        },
        function(data,status){
            alert("Data: " + data + "\nStatus: " + status);
        });
    });
});
</script>

实际上,如果你有几个元素可以触发表单提交,你可以这样做:

<script>

    function submitForm(){
        //Here send by AJAX the form and handle all actions 
    }

    $('.elementTriggerSubmit').change(submitForm);
    $('#otherElement').change(submitForm);
</script>