我想捕捉如果发生了任何变化<textarea>。比如输入任何字符(删除,退格)或鼠标点击粘贴或剪切。是否有一个jQuery事件可以触发所有这些事件?

我尝试了更改事件,但它只在从组件tab out后触发回调。

使用:我想启用一个按钮,如果<textarea>包含任何文本。


当前回答

使用输入事件。

var button = $("#buttonId");
$("#textareaID").on('input',function(e){
  if(e.target.value === ''){
    // Textarea has no value
    button.hide();
  } else {
    // Textarea has a value
    button.show();
  }
});

其他回答

试试这个吧:

$('#textareaID').bind('input propertychange', function() {

      $("#yourBtnID").hide();

      if(this.value.length){
        $("#yourBtnID").show();
      }
});

DEMO

这适用于你所做的任何更改,输入,剪切,粘贴。

试着集中精力做这件事

$("textarea").focusout(function() {
   alert('textarea focusout');
});

2018,没有JQUERY

这个问题是关于JQuery的,这只是供参考的。

JS

let textareaID = document.getElementById('textareaID');
let yourBtnID = document.getElementById('yourBtnID');
textareaID.addEventListener('input', function() {
    yourBtnID.style.display = 'none';
    if (textareaID.value.length) {
        yourBtnID.style.display = 'inline-block';
    }
});

HTML

<textarea id="textareaID"></textarea>
<button id="yourBtnID" style="display: none;">click me</div>

.delegate是唯一一个工作到我与jQuery JavaScript库v2.1.1

 $(document).delegate('#textareaID','change', function() {
          console.log("change!");
    });

试试这个

 $('textarea').trigger('change');
 $("textarea").bind('cut paste', function(e) { });