所以,我有一个从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将为我提供最初加载到表中的旧数据。有没有一种有效的方法从文本输入中提取这些数据?
答案 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()
给出初始值。