获取作为输入文本字段的Datatables单元格值

K J*_*son 5 javascript jquery dom input datatables

我正在使用javascript数据源生成DataTable.该数据是从一个AJAX调用其中的NodeJS查询SQL Server数据库表,然后返回两列,两数值数据返回.我添加了2个列来保存输入字段,默认值为0,供用户输入将增加/减少ColumnA/B中的值的数字.

$('#mytable').DataTable( {
    "data": data,
    "columns": [
        { "data": "ColumnA", "defaultContent": "NA" },
        { "data": "ColumnB", "defaultContent": "NA" },
        { "data": undefined, "defaultContent": '<input type="text" value="0" size="10"/>'},
        { "data": undefined, "defaultContent": '<input type="text" value="0" size="10"/>'}
    ]
});
Run Code Online (Sandbox Code Playgroud)

这渲染得很好,我可以修改单元格中输入字段中的文本.表外有一个单独的输入字段,用户可以单击以"提交更改",这将调用将读取表的输入字段的javascript函数.但是,我无法弄清楚如何获得它们.使用:

var aTable = $('#mytable').DataTable();
var colAchange = atable.cell(0, 2).data();
var colBchange = atable.cell(0, 3).data();
Run Code Online (Sandbox Code Playgroud)

两个colA/Bchange变量都只有'input type ="text"...'html文本,而不是输入字段的值.这确实有意义,但我找不到正确的方法来读取输入字段的值.有一段时间我在Datatables文档中读过你可以将'meta'数据添加到行数据中.我是否需要这样做才能在该元素上获得"id"并通过该元素查询元素?否则我如何获得该输入的值?

dav*_*rad 13

如果您只想提取输入框中输入的值,则必须通过jQuery或本机DOM.dataTables本身并不知道对表单输入字段所做的任何更改,因此尝试检索值cell().data()将永远不会有效,无论是否有id正交数据:

aTable.cell(0,2).nodes().to$().find('input').val()
aTable.cell(0,3).nodes().to$().find('input').val()   
Run Code Online (Sandbox Code Playgroud)

将为您提供各种输入的当前值.在这个小提琴中复制了你上面的场景100% - > http://jsfiddle.net/obmghyo7/

这基本上也是官方文档建议从表单输入中提取值的方法 - > https://datatables.net/examples/api/form.html

如果你想在表中执行过滤/搜索,其中还包括用户在表单输入中所做的更改,那么它有点棘手 - > JQuery Datatables在输入和搜索中搜索(我的,但我不知道更好的答案)