php 新元素的绑定事件

6ojccjat  于 2023-01-08  发布在  PHP
关注(0)|答案(1)|浏览(123)

如何以编程方式为新元素注册事件?我正在使用自动完成库和数据表库(添加行函数),自动完成事件仅应用于现有行,而不应用于新插入的行。如何解决此问题?请帮助...
我试过了...

$('#addRow').on('click', function () {

        let input = document.createElement("input")
        input.setAttribute("type", "text");
        input.setAttribute("class", "material_no");
        input.setAttribute("id", "material_no");
        input.setAttribute("placeholder", "Enter material no.");

        table.row.add( [
            '-',
            `
            <input type='text' class='material_no' id = 'material_no' placeholder = 'Enter Material No.'/>
            `,
            '-',
            '-',
            '-',
            '-',
            '-',
            '-',
            '-',
            '-',
            '-',
        ] ).draw();
 
        counter++;
    } );
    // Automatically add a first row of data
    $('#addRow').click();

    //autocomplete library
    $('.material_no').each(function(i, e) {
        $(this).bind('change').autocomplete({
            source: '/mef/suggestions.php',
            change: function( event, ui ) {
                console.log($(this).val())

                console.log(table.row($(this).parent()).index())
                

                // $.ajax({
                //     url: '/mef/ajax/part_names.php',
                //     method: 'POST',
                //     data: { part_code: $(this).val()},
                //     success: data => {
                //         $(`td:eq(${i})`).html(data)
                //         console.log(data)
                //     },
                //     error: err => console.log(err)
                // })
                
                
                return false;
            },
        })
    })
xwmevbvl

xwmevbvl1#

我通过在datatable的draw函数中放置事件来解决这个问题。我不知道这是一个好方法还是会在未来引起bug ...

table.on('draw', function () {
        $('.material_no').each(function(i, e) {
            $(this).autocomplete({
                source: '/mef/suggestions.php',
                change: function( event, ui ) {
                    console.log($(this).val())

                    console.log(table.row($(this).parent()).index())
                    

                    // $.ajax({
                    //     url: '/mef/ajax/part_names.php',
                    //     method: 'POST',
                    //     data: { part_code: $(this).val()},
                    //     success: data => {
                    //         $(`td:eq(${i})`).html(data)
                    //         console.log(data)
                    //     },
                    //     error: err => console.log(err)
                    // })
                    
                    
                    return false;
                },
            })
        })
    });

相关问题