如何在 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 );
}