繁体   English   中英

如何在PHP中添加具有动态下拉列表的动态行jQuery

[英]how to add dynamic row jquery having dynamic dropdown in php

我可以添加许多行并为每个文本字段添加事件,并在第一行成功使用php成功动态添加dropdwon。

但是单击下拉菜单中的添加按钮事件时,我无法复制动态下拉菜单。

这是Javascript:

    $(document).ready(function () {
    var counter = 1;


    $("#addrow").on("click", function () {
        counter++;

        var newRow = $("<tr>");
        var cols = "";
        cols += "<td><select name='draft_id" + counter + "'><option value=''>Pilih</option></select></td>"; //<select name="draft_id" id="draft_id"></select>
        cols += "<td><input type='text' name='draft_qty" + counter + "' size='3'/></td>";
        cols += "<td><input type='text' name='draft_isi" + counter + "' size='50'/></td>"; //<input type="text" name="draft_isi"/>
        cols += "<td><input type='text' name='harga_satuan" + counter + "' size='8'/></td>"; //<input type="text" name="harga_satuan" id="harga_satuan" />
        cols += "<td><input type='text' name='jumlah" + counter + "' readonly='readonly'/></td>";
        cols += "<td><button type='button' class='deleteRow'>Del</button></td>"; //<button type="button" class="deleteRow">Del</button>
        newRow.append(cols);

        $("table.order-list").append(newRow);
    });

    $("table.order-list").on("change", 'input', function (event) {
        hitungbaris($(this).closest("tr"));
        hitung();

    });

    $("table.order-list").on("click", "button.deleteRow", function (event) {
        $(this).closest("tr").remove();
        hitung();

    });

});

function hitung() { //fungsi hitung ini memiliki 2 fungsi sekaligus yaitu ...:
    hitungGrandTotal();
    hitungsisa();
}

function hitungbaris(row) {
    var harga_satuan = +row.find('input[name^="harga_satuan"]').val();
    var draft_qty = +row.find('input[name^="draft_qty"]').val();
    row.find('input[name^="jumlah"]').val((harga_satuan * draft_qty).toFixed(2));
}

function hitungGrandTotal() {
    var grandTotal = 0;
    $("table.order-list").find('input[name^="jumlah"]').each(function () {
        grandTotal += +$(this).val();
    });
    $("#grandtotal").val(grandTotal.toFixed(2));
}

function hitungsisa() { //bisa juga di gunakan untuk menghitung uang kembali
    //var sisa = "";
    var bayar = parseFloat(document.formpenjualan.bayar.value);
    var grandtotal = parseFloat(document.formpenjualan.grandtotal.value);
    if (bayar < grandtotal){
    //
    sisa = "KREDIT";
    }else{
    //
    sisa = "LUNAS";
    }
    $("#sisa").val(sisa);   
}

的HTML

                    <input type="button" id="addrow" value="Tambah Baris" />        
                <table cellspacing="0" cellpadding="3"class="order-list table table-striped responsive-utilities jambo_table bulk_action">
                  <thead>
                    <tr class="headings">
                        <th class="column-title"><div align="center">Draft ID </div></th>
                        <th class="column-title"><div align="center">Qty</div></th>
                        <th class="column-title"><div align="center">Uraian</div></th>
                        <th class="column-title"><div align="center">Harga Satuan </div></th>
                        <th class="column-title"><div align="center">Jumlah</div></th>
                        <th class="column-title"><div align="center">Aksi</div></th>
                    </tr>
                  </thead>

                    <tr>
                        <td>

                                <?php 
                                $result = mysql_query("select * from draft_order");    
                                $jsArrayDO = "var draftID = new Array();\n";
                                ?>
                                <select name="select" onchange="changeValue_draftID(this.value)" class="category-select">
                                  <option>-Pilih-</option>
                                  <?php while ($row = mysql_fetch_array($result)) {
                                    $jsArrayDO .= "draftID['" . $row['draft_id'] . "'] = {draft_qty:'" . addslashes($row['draft_qty']) . "',draft_isi:'".addslashes($row['draft_isi'])."'};\n";?>
                                  <option value="<?php echo $row['draft_id'];?>"><?php echo $row['draft_id'];?></option>
                                  <?php } ?>
                                </select>
                                <script type="text/javascript">
                                <?php echo $jsArrayDO; ?> 
                                function changeValue_draftID(id){
                                document.getElementById('draft_qty').value = draftID[id].draft_qty;  
                                document.getElementById('draft_isi').value = draftID[id].draft_isi;  
                                };  
                                </script>

                                </td>
                        <td><input type="text" name="draft_qty" id="draft_qty" size="3"/></td>
                        <td><input type="text" name="draft_isi" id="draft_isi" size="50"/></td>
                        <td><input type="text" name="harga_satuan" id="harga_satuan" size="8"/></td>
                        <td align="right"><input type="text" name="jumlah" id="jumlah" readonly="readonly"/></td>
                        <td><button type="button" class="deleteRow">Del</button></td>
                    </tr>
                    <tfoot>
                    <tr>
                        <td>&nbsp;</td>
                        <td align="right">&nbsp;</td>
                        <td align="right">&nbsp;</td>
                        <td align="right" valign="middle">Grand Total : </td>
                        <td><input name="grandtotal" type="text" id="grandtotal" readonly="readonly"/></td>
                        <td align="right">&nbsp;</td>
                    </tr>
                    <tr>
                      <td align="right">&nbsp;</td>
                      <td align="right">&nbsp;</td>
                      <td align="right">&nbsp;</td>
                      <td align="right" valign="middle">Bayar : </td>
                      <td><input name="bayar" type="text" id="bayar" /></td>
                      <td align="right">&nbsp;</td>
                  </tr>
                    <tr>
                      <td align="right"></td>
                      <td align="right">&nbsp;</td>
                      <td align="right">&nbsp;</td>
                      <td align="right" valign="middle">Sisa : </td>
                      <td><input name="sisa" type="text" id="sisa"readonly="readonly"/></td>
                      <td align="right">&nbsp;</td>
                  </tr>
                  </tfoot>
                </table>

您可以在JSFIDDLE上查看代码

请帮助我如何首先使用php作为行来克隆/添加动态下拉列表。

需要帮忙

谢谢

使用jquery函数.clone()在此之后插入insertAfter() - appendTo()的父的DOM元素select.clone().appendTo(select.parent()); JSFiddle-您可以复制/粘贴下拉菜单,如该JSFiddle所示

 var select = $('.test'); $('#btn1').on('click', function () { select.clone().insertAfter(select); }); 
 #btn1 { display:block; margin-bottom:10px; } .test{ display:block; margin-bottom:5px; } 
 <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script> <button id="btn1">Duplicate</button> <select class="test"> <option value="1">option 1</option> <option value="2">option 2</option> <option value="3">option 3</option> <option value="4">option 4</option> <option value="5">option 5</option> </select> 


更新:检查此PHP Fiddle ,它演示了与您的问题类似的事情,它是可以从数据库查询或JSON响应中获得的动态生成的下拉列表。

但是,如果要复制整个文本输入集以及动态生成的下拉列表,请检查此PHP Fiddle 2 ,该教程首先显示了如何获取容器div的内部html,然后附加了其他输入集,并选择。


更新2: 发表评论

要为每个下拉列表提供唯一的id ,请为第一个动态生成的下拉列表提供一个ID,以使用此js代码代替:

var html = $('#container').html(),
    id = $('.test').first().attr('id');
    id = id.replace(/drop/, '');
$('#btn1').on('click', function () {
    $('#container').append(html);
    id++;
    $('.test').last().attr('id', 'drop' + id);
});

就像在PHP Fiddle 3中一样 ,检查控制台日志以查看每个人的id

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM