【问题标题】:Javascript : 'select' and 'onclick' behavior isn't as expectedJavascript:“选择”和“点击”行为不符合预期
【发布时间】:2021-10-12 20:12:01
【问题描述】:

我有一个无限的select2,使用按钮显示select2,但它不起作用,我的脚本有问题吗?

这是用onclick按钮添加无限select2的脚本:

<div id="cont"></div>
<button id="addRow" onclick="addRow();"> Add Rows</button>

这是一个调用select2的函数

<script type="text/javascript">

    var arrHead = new Array();
    arrHead     = ['AKUN', 'DEBIT', 'CREDIT','#']; 

    function createTable() {
        var empTable       = document.createElement('div');
        empTable.setAttribute('class', 'ed-tab');

        empTable.innerHTML = `
            <table id="empTable" class="table table-borderedless table-striped w-100">
                <thead>
                <tr>
                    <th width="50%">AKUN</th>
                    <th width="22%">DEBIT</th>
                    <th width="22%">CREDIT</th>
                    <th width="6%" class="text-center">#</th>
                <tr>
                </thead>
                <tbody>
                    <tr></tr>
                    <tr></tr>
                </tbody>
            </table>
        `;

        var div = document.getElementById('cont');
        div.appendChild(empTable);

    }

    function addRow() {

        var empTab  = document.getElementById('empTable');
        var rowCnt  = empTab.rows.length;
        var tr      = empTab.insertRow(rowCnt);

        for (var c = 0; c < arrHead.length; c++) {
            var td = document.createElement('td');
            td     = tr.insertCell(c);
            
            if (c == 0) { 
                var select  = document.createElement("select");
                select.setAttribute('type', 'text');
                select.setAttribute('class', 'form-control select_ids');
                select.innerHTML = `
                    <select class="form-control form-search" placeholder="tes" type="text" >
                        <option></option>
                        <?php 
                            $kodeakun_q = $db->query("SELECT * FROM tb_akun WHERE parent_akun >= 0");
                            if ($kodeakun_q->num_rows > 0) {
                                while($row = $kodeakun_q->fetch_assoc()){
                        ?>
                        <option id="func/f_insert.php?select_id=<?= $row['kode_akun'] ?>" value="<?= $row['kode_akun'] ?>"> 
                            <?= $row['kode_akun']; ?> | <?= $row['nama_akun'] ?> 
                        </option>
                        <?php } }  ?>
                    </select>
                `;
                td.appendChild(select);
            }else if( c == 1){
                var ele = document.createElement('input');
                ele.setAttribute('type', 'text');
                ele.setAttribute('class', 'form-control');
                ele.setAttribute('value', '');
                td.appendChild(ele);
            }else if (c == 2) {
                var ele = document.createElement('input');
                ele.setAttribute('type', 'text');
                ele.setAttribute('class', 'form-control');
                ele.setAttribute('value', '');
                td.appendChild(ele);
            }else if(c == 3){
                var button       = document.createElement("button");
                button.setAttribute('class', 'btn btn-danger');
                button.setAttribute('onclick', 'removeRow(this)');
                button.innerHTML = `<i class="fas fa-trash"></i>`;
                td.appendChild(button);
            }
        }

    }
    
    function removeRow(oButton) {
        var empTab = document.getElementById('empTable');
        empTab.deleteRow(oButton.parentNode.parentNode.rowIndex);
    }

    function submit() {
        var myTab = document.getElementById('empTable');
        var arrValues = new Array();

        for (row = 1; row < myTab.rows.length - 0; row++) {
            for (c = 0; c < myTab.rows[row].cells.length; c++) {
                var element = myTab.rows.item(row).cells[c];
                if (element.childNodes[0].getAttribute('type') == 'text') {
                    arrValues.push("'" + element.childNodes[0].value + "'");
                }
            }
        }

        console.log(arrValues);
    }

</script>

这是 select2 的主要脚本:

<script>
    
    $(document).ready(function(){
        $(".select_ids").selectize({
            placeholder: "Pilih Akun . . .",
            allowClear: true,
        });
        
    });
    
</script>

注意:
我在onclick按钮中添加了一个函数来调用select2,但它只在第一个select2中有效,当我添加select2时它不能正常工作。

【问题讨论】:

    标签: javascript php html jquery jquery-select2


    【解决方案1】:

    添加到表格后只需要绑定元素选择

    for (var c = 0; c < arrHead.length; c++) {
    .
    ..
    ...            
    }
    // bind element
    $('.select_ids').select2()
    

    演示 jsfiddle:https://jsfiddle.net/4uja63fh/

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-05-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-01-08
      相关资源
      最近更新 更多