Onchange在动态添加的行上不起作用

时间:2018-08-12 09:03:50

标签: javascript jquery ajax events

我是jquery的新手,在这个项目中,我正在尝试制作药房系统。我想要一个功能,用户可以在其中添加来自供应商的购买。 这是我的代码:

 $(document).on('change', '.supplier_name', function() {

         var supplier_name = $('.supplier_name').val();

        $.ajax({
            url : "<?php echo base_url('example/getmedbysupplier')?>",
            method : "POST",
            data : {supplier_name: supplier_name},
            async : false,
            dataType : 'json',
            success: function(data){
                var html = '';
                var i;
                html += '<option selected="true" value="" disabled >Choose medicine</option>';
                for(i=1; i<data.length; i++){
                    html += '<option>'+data[i].medicine_name+'</option>';
                }
                $('.medicine_name').html(html);

            }
        });
        });


var count = 1;

      $('#addpurchase').on( 'click', function () {
        purchase.row.add( [
          '<select style="width:100%;" class="form-control medicine_name" id="medicine_name'+count+'" name="medicine_name[]" data-stock="#stock'+count+'" data-unit="#unit'+count+'" data-price="#price'+count+'"><option selected="true" value="" disabled >Choose supplier</option>',
          '<input id="stock'+count+'" name="stock[]" class="form-control stock" readonly >',
          '<input id="unit'+count+'" name="unit[]" class="form-control" readonly>',
          '<input id="price'+count+'" name="price[]" class="form-control price" readonly>',
          '<input type="number" id="quantity'+count+'" name="quantity[]" class="form-control quantity">',
          '<input id="subtotal'+count+'" name="subtotal[]" class="form-control subtotal" readonly>',
          '<button id="removeproduct" class="btn btn-danger btn-sm" type="button"><span class="fa fa-trash"></span> Delete</button>',
        ] ).draw( false );

        count++;

      } );

问题是onchange只工作一个。当我再次添加该行时,它会一直告诉我选择供应商(我已经完成了)。我尝试了另一种解决方案,例如绑定jquery,父/兄弟和其他解决方案,但它仅在表内起作用。

enter image description here

因此,我通过点击任意数量的按钮来找出答案,然后选择供应商,如下所示: enter image description here

如何使其在变更时自动工作(我不需要先添加产品)?

1 个答案:

答案 0 :(得分:0)

您绑定到#addpurchase的函数正在生成错误消息。它正在创建一个select元素,而没有关闭标签,并且只有一个select供应商选项。

<select style="width:100%;" class="form-control medicine_name" id="medicine_name'+count+'" name="medicine_name[]" data-stock="#stock'+count+'" data-unit="#unit'+count+'" data-price="#price'+count+'"><option selected="true" value="" disabled >Choose supplier</option>

那么,如何在不选择供应商文本的情况下期待新行呢?