【问题标题】:How to capture onchange event for a <td>如何捕获 <td> 的 onchange 事件
【发布时间】:2014-10-10 06:51:52
【问题描述】:

我需要在下面的 TD 上捕获更改事件。每当其内容发生变化时(在本例中为“罗斯蒙特测量”),我需要调用一个函数。我认为它不接受“onchange”属性......所以这就是问题所在。这个可以吗?

<TD style="PADDING-LEFT: 6px; CURSOR: default" id="A0.R0.Indexed Pick 3" class="fv fvu" title="Rosemount Measurement" _savedBKClr>Rosemount Measurement</TD>

我将发布更大部分代码的打印屏幕,其中包含上述行(以防有帮助)。

【问题讨论】:

标签: javascript jquery html


【解决方案1】:

TD 没有更改事件,因为它没有值,它只在里面保存一些文本。它为其创建自定义事件的唯一方法(您需要在更改内部文本后自己触发事件)

setTimeout(function() {
  $('td').text(function() {
    return this.innerHTML + '... success?';
  }).trigger('custom:td:name_whatever.event');
}, 1000);

$('td').on('custom:td:name_whatever.event', function(){
  alert(this.innerHTML);
});
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<table>
  <tr>
    <td>Test</td>
  </tr>
</table>

【讨论】:

    【解决方案2】:

    我建议使用自定义事件,例如contentchange,并从使内容更改的 src 触发它。

    订阅活动

    $('table.yourClassName').on('contentchange', 'td', fn);
    

    在内容更改代码处

    $(refToTheTd).trigger('contentchange');
    

    【讨论】:

      【解决方案3】:

      我找到了一个可以满足我要求的解决方案,但我还没有适应它(仍在尝试解决):

      //assume tbl has id foobar
      document.getElementById('foobar').addEventListener('change',function(e)
      {
          e = e || window.event;
          var target = e.target || e.srcElement;
          var name = target.id || target.getAttribute('name');
          alert('the ' + name + ' element changed!');
      },false);
      

      很遗憾,上面提供的两种解决方案不能满足我的要求。

      【讨论】:

      • 这很好用,除了一件事:它不会捕获对 &lt;td&gt; 中的文本所做的更改。请看这个:link
      猜你喜欢
      • 1970-01-01
      • 2017-05-02
      • 2020-05-30
      • 1970-01-01
      • 2013-03-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多