【问题标题】:jQuery datatable show span when update successful更新成功时jQuery数据表显示跨度
【发布时间】:2018-01-22 21:58:07
【问题描述】:

我正在使用 jQuery 数据表,并且正在开发内联编辑功能。我一直在尝试获得绿色检查以显示记录何时更新。

这是填充数据表的 ajax:

$.ajax({
  url: 'api/massEditorSummary.php',
  type: 'POST',
  data: data,
  dataType: 'html',
  success: function(data, textStatus, jqXHR)
  {
    var jsonObject = $.parseJSON(data); 
    var table = $('#example1').DataTable({  
      "data": jsonObject,
      "columns": [
        { "data": "partner_name" }, 
        { "data": "service" },
        {
          "data": "forecast",
          "fnCreatedCell": function (nTd, sData, oData, iRow, iCol)
          {
                $(nTd).html("<input type='text' class='form-control editForecast' 
                id='editForecast' data-uid='"+oData.UID+"' data-editforecast='"+oData.forecast+"'
                value='"+oData.forecast+"' style='width:75px; height:30px;' /> 
               <span id='testID' style='display: none;'><i class='fa fa-check' id='updatedIcon' aria-hidden='true'
               style='color:green;'> </i></span>");
          }
        }
      ],
      "stateSave": true,
      "autoWidth": false    
    });
  },
  error: function(jqHHR, textStatus, errorThrown)
  {
    // show fail stuff
  }
});

如果您在“预测”数据列中注意到,我有一个 ID 设置为 testID 的跨度。这个跨度包括一个很棒的字体检查图标。我最初将其设置为显示:无。

现在我有了这个在 BLUR 事件上起作用的更新功能:

$('#example1').on('blur', 'tr > td > .editForecast', function(e) 
  e.preventDefault();
  var uid = $(this).attr('data-uid');
  var forecastcurval = $(this).attr('data-editforecast');
  var forecastnewval = $(this).val();
  var forecastData = '';

  $.post('api/inlineEditProcess.php', {uid:uid, forecastcurval:forecastcurval, forecastnewval:forecastnewval}, function(data)
  {
    forecastData = data;
    callForecastFunction(forecastData);
  });

  function callForecastFunction(forecastData)
  {
    if(forecastData == "Success")
    {
      $(this).css('display', 'inline-block'); // this is where I want to show the check
    }
    else
    {
      // do fail stuff
    }
  }
});

您将在 callForecastFunction 函数中看到,如果从流程脚本返回的数据等于“成功”,则显示检查。

【问题讨论】:

  • 那么你是说span id='testID'] 在每一行都重复了? html 中的重复 ID 属性无效。
  • 是否有错误信息或没有任何反应?我会 console.log forecastDatathis 确认它们是你认为的那样。
  • 发帖的专业提示:尽量让您的问题保持简洁。你的一些问题没有得到很好的接受,这可能是由于一些细节和其他闲聊材料,在你看来是礼貌的,但实际上可能被解释为恭顺、阿谀奉承或乞求和恳求。这包括感谢,高级感谢,请帮助我,帮助我,卡住 X 天,我真的有谷歌搜索,希望它很清楚,让我知道 - 如果-需要看到更多的东西,它真的很感激,等等。经验丰富的帮助者宁愿只是阅读问题的细节。

标签: javascript jquery css ajax datatables


【解决方案1】:

如上所述,重复的id 属性是不允许的。您应该修复输入和跨度ID。跨度id可以基于UID,例如:

"<span id='" + rowData.UID + "' style='display: none;'><i class='fa fa-check' id='updatedIcon' aria-hidden='true' style='color:green;'> </i></span>");

您可以添加其他文字以使其更加独特。

然后更改 callForecastFunction() 中的选择器以根据 UID 选择跨度:

$('#' + uid).css('display', 'inline-block'); // this is where I want to show the check

顺便说一句,您似乎在事件处理函数中缺少{

$('#example1').on('blur', 'tr > td > .editForecast', function(e) 

【讨论】:

  • 是的!!!这正是我一直在寻找的。我希望我能再对你的答案投票 10 次。谢谢你,先生。接受你的回答。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多