【问题标题】:What event does jQuery fire when using append on a textarea?在 textarea 上使用 append 时 jQuery 会触发什么事件?
【发布时间】:2017-08-02 12:20:45
【问题描述】:

我正在尝试监视文本区域中的任何更改:

<textarea id="log-box__data"></textarea>

通过 jQuery append 对 textarea 独家进行更改:

$(document).on('click', '#myBtn', function(e) {
  $('#log-box__data').append('someText' + '\n');
});

append[ed] 到 textarea 时会触发什么事件?

而且,如果没有,我该如何监控这一变化?

我尝试过的事情:

$(document).on('input change keyup paste', '#log-box__data', function() {
  alert( "foobar" );
});

当点击#myBtn 时,这些事件都不会触发。

【问题讨论】:

  • 为什么使用 , append() 而不是 val()?
  • 你应该使用 val() 而不是 append()
  • append 实际上也有效...
  • 为什么不在追加后添加.trigger("change")
  • @Rahul Naik - 为什么?

标签: javascript jquery events append textarea


【解决方案1】:

追加后使用触发函数会有所帮助

$(document).on('click', '#myBtn', function(e) {
  
  $('#log-box__data').append('someText' + '\n');
  $('#log-box__data').trigger("change");
  
});

$('#log-box__data').on('change', function(e) {
  alert( "foobar" );
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<textarea id="log-box__data"></textarea><br />
<button id="myBtn">add text</button>

【讨论】:

  • 是的,就可以了。我从没想过手动触发事件。哦!
【解决方案2】:

追加不是一个好主意,并且设置一个值将永远不会调用 onchange 事件所以尝试下面的代码手动触发

 $("#myBtn").bind("click",function(){
     $("#log-box__data").val("yourtexthere").trigger('change');
 });

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-12-22
    • 1970-01-01
    • 1970-01-01
    • 2011-03-21
    • 2011-07-28
    • 1970-01-01
    • 2011-04-23
    • 1970-01-01
    相关资源
    最近更新 更多