动态更改添加到Jquery Datatables表的输入字段上的捕获更改事件

问题描述 投票:6回答:2

我有一个ajax调用,该调用使用以下代码为响应中的每个记录向数据表添加一些行:

strAppName = data.Application_Name
maintCost = '<input class="maintCostField" appid="' + data.Application_ID + '" type="text" placeholder="$">';

$('#myReport').dataTable().fnAddData([
    strAppName,
    maintCost,
    etc,
    etc
]);

我已经尝试了以下选择器/事件来捕获对文本框的更改,但是没有一个触发。它们在document.ready部分中...

$(".maintCostField").bind('change',function () {
    val = $(this).val();
    app = $(this).attr('appid');
    alert('Updating app# ' + app + ' with ' + val);
});


$(".maintCostField").on('change',function () {
    val = $(this).val();
    app = $(this).attr('appid');
    alert('Updating app# ' + app + ' with ' + val);
});

(我不赞成使用此选项)

$(".maintCostField").live('change',function () {
    val = $(this).val();
    app = $(this).attr('appid');
    alert('Updating app# ' + app + ' with ' + val);
});

我在做什么错?我看不出为什么它与Click event doesn't work on dynamically generated elements或其他很多词有什么不同...

更新*我在数据表的fnDrawCallback事件中添加了以下内容,现在它可以工作,只有它执行的次数与屏幕上窗体的执行次数相同。]

$(".maintCostField").each(function () {
    this.addEventListener("change", function () {
        val = $(this).val();
        app = $(this).attr('appid');
        alert('Updating app# ' + app + ' with ' + val);
    }, true);
});

我有一个ajax调用,该调用使用以下代码为响应中的每个记录向数据表添加一些行:strAppName = data.Application_Name maintCost ='

jquery dom event-handling onchange
2个回答
26
投票

question的答案实际上是错误的。


1
投票

您也可以使用$(document).on('input', '.maintCostField', function () {

© www.soinside.com 2019 - 2024. All rights reserved.