如何在 onblur 函数中将 "obj" 传递给 updateFinalTermScore(obj1)?
How to pass "obj" to updateFinalTermScore(obj1) in onblur function?
我正在使用数据表并尝试通过 ajax 调用来填充数据表。
在数据表中,我添加了一个文本框功能,以便用户可以更改最终标记的值。一旦用户更改了最终标记的值,我想使用 onblur 函数将新的最终标记值保存在数据库中。所以我必须将 rosterID 和新的最终标记传递给 onblur 函数。但是我不知道如何在其中传递2个参数。我决定将一个名为“obj”的对象传递给它。但它根本没有传递给函数,函数“obj1”的形式参数似乎未定义。
这是我的代码。
// piece of code from my datatables AJAX call.
{ data: 'SrNo', title: "Sr No" }, // 0
{ data: 'RosterID', title: "Roster ID", visible: false }, // 1
{ data: 'RollNo', title: "Roll No" }, // 2
{ data: 'StudentName', title: "Student Name" }, // 3
{
data: 'FinalScore', title: "Final Score", //4
render: function (data, type, full, row) {
var obj = {
ros: full.RosterID,
final: full.FinalScore
}
return '<input class="form-control" id="DTFinalaTermMarks"
name="DTFinalaTermMarks" type="text" onblur="updateFinalTermScore('+obj+');"
value = ' + data + ' >';
}
},
{ data: 'WeightedScore', title: "Weighted Score"}, //5
// function with formal parameter
function updateFinalTermScore(obj1) {
var roterID = obj1.ros;
alert("hi");
}
```
kindly help.
您需要使用的对象是this
。
updateFinalTermScore(this)
在 onblur
等事件的上下文中,在列呈现器中创建,它看起来如下所示:
{
title: "Salary",
data: "salary",
render: function (data, type, row, meta) {
return '<input class="form-control" id="DTFinalaTermMarks" ' +
'name="DTFinalaTermMarks" type="text" ' +
'onblur="updateFinalTermScore(this, ' +
'\'' + row.RosterID + '\'' + ');" ' +
'value = ' + data + ' >';
}
}
return
语句使用字符串连接来创建所需的 HTML.
this
对象表示 onblur
事件的上下文 - 事件发生的节点。在这种情况下,这是相关的 <input>
元素。
您需要使用此方法才能访问 <input>
元素的值 - 该元素可能已在 onblur
事件之前由用户更新。
DataTables 渲染函数创建的结果 HTML 是:
<input class="form-control"
id="DTFinalaTermMarks"
name="DTFinalaTermMarks"
type="text"
onblur="updateFinalTermScore(this, '123');" value="456">
这里,123
是名单ID。我假设这是一个字符串值,这就是为什么我使用 '\''
用单引号将该值括起来的原因。
当onblur
事件发生时,updateFinalTermScore
可以访问this
表示的节点,并使用jQuery提取user-provided值val()
函数:
function updateFinalTermScore(node, salary) {
console.log( $( node ).val() );
console.log( RosterID );
}
我正在使用数据表并尝试通过 ajax 调用来填充数据表。 在数据表中,我添加了一个文本框功能,以便用户可以更改最终标记的值。一旦用户更改了最终标记的值,我想使用 onblur 函数将新的最终标记值保存在数据库中。所以我必须将 rosterID 和新的最终标记传递给 onblur 函数。但是我不知道如何在其中传递2个参数。我决定将一个名为“obj”的对象传递给它。但它根本没有传递给函数,函数“obj1”的形式参数似乎未定义。 这是我的代码。
// piece of code from my datatables AJAX call.
{ data: 'SrNo', title: "Sr No" }, // 0
{ data: 'RosterID', title: "Roster ID", visible: false }, // 1
{ data: 'RollNo', title: "Roll No" }, // 2
{ data: 'StudentName', title: "Student Name" }, // 3
{
data: 'FinalScore', title: "Final Score", //4
render: function (data, type, full, row) {
var obj = {
ros: full.RosterID,
final: full.FinalScore
}
return '<input class="form-control" id="DTFinalaTermMarks"
name="DTFinalaTermMarks" type="text" onblur="updateFinalTermScore('+obj+');"
value = ' + data + ' >';
}
},
{ data: 'WeightedScore', title: "Weighted Score"}, //5
// function with formal parameter
function updateFinalTermScore(obj1) {
var roterID = obj1.ros;
alert("hi");
}
```
kindly help.
您需要使用的对象是this
。
updateFinalTermScore(this)
在 onblur
等事件的上下文中,在列呈现器中创建,它看起来如下所示:
{
title: "Salary",
data: "salary",
render: function (data, type, row, meta) {
return '<input class="form-control" id="DTFinalaTermMarks" ' +
'name="DTFinalaTermMarks" type="text" ' +
'onblur="updateFinalTermScore(this, ' +
'\'' + row.RosterID + '\'' + ');" ' +
'value = ' + data + ' >';
}
}
return
语句使用字符串连接来创建所需的 HTML.
this
对象表示 onblur
事件的上下文 - 事件发生的节点。在这种情况下,这是相关的 <input>
元素。
您需要使用此方法才能访问 <input>
元素的值 - 该元素可能已在 onblur
事件之前由用户更新。
DataTables 渲染函数创建的结果 HTML 是:
<input class="form-control"
id="DTFinalaTermMarks"
name="DTFinalaTermMarks"
type="text"
onblur="updateFinalTermScore(this, '123');" value="456">
这里,123
是名单ID。我假设这是一个字符串值,这就是为什么我使用 '\''
用单引号将该值括起来的原因。
当onblur
事件发生时,updateFinalTermScore
可以访问this
表示的节点,并使用jQuery提取user-provided值val()
函数:
function updateFinalTermScore(node, salary) {
console.log( $( node ).val() );
console.log( RosterID );
}