从动态生成的DataTable输入中获取值

时间:2015-02-11 21:32:01

标签: javascript jquery datatables jquery-datatables

所以,我有一个从ajax获取数据的dataTable。我希望其中两列具有文本输入,以便用户可以通过单击同一行中的按钮来编辑和更新信息。这样做很好:

{
    "render": function ( data, type, row ) {
        return '<input id="nameInput" type="text" value="' + row.name + '" />';
    },
    "targets": 0
},
{
    "render": function ( data, type, row ) {
        return '<input id="hourlyRateInput" type="text" value="' + row.hourlyRate + '" />';
    },
    "targets": 1
},

{
        "targets": 2,
        "data": null,
        "defaultContent": "<button>Update</button>"
},

数据被加载到可编辑的文本输入中。但是,在此之后,我无法找到从输入中提取值的方法。我最接近的是

var data = table.row( $(this).parents('tr') ).data();

成功给出了该行的数据。但是,文本输入值永远不会改变。如果用户编辑文本,data.name将为我提供最初加载到表中的旧数据。有没有一种有效的方法从文本输入中提取这些数据?

2 个答案:

答案 0 :(得分:6)

在更新按钮的单击事件中,您可以从输入中获取值,如下所示:

var nameInput = $(this).closest('tr').find('#nameInput').val();
var hourlyRateInput = $(this).closest('tr').find('#hourlyRateInput').val();

这可以通过获取this的父(这是您的更新按钮),然后按Id定位选择器来实现。

真的,ID应该是课程,因为你这样做会产生重复的ID。

'<input class="nameInput" ...

然后你会得到这样的价值:

var nameInput = $(this).closest('tr').find('.nameInput').val();

答案 1 :(得分:0)

您应该使用.attr('data-name')作为.data()给出初始值。