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

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

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


当前回答

这是另一个(现代的)版本,但与之前提到的略有不同。经IE9测试:

$('#textareaID').on('input change keyup', function () {
  if (this.value.length) {
    // textarea has content
  } else {
    // textarea is empty
  }
});

对于过时的浏览器,您还可以添加selectionchange和propertychange(如在其他答案中提到的)。但是在IE9中,选择更改对我不起作用。这就是为什么我加了keyup。

其他回答

试试这个吧:

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

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

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

DEMO

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

这是另一个(现代的)版本,但与之前提到的略有不同。经IE9测试:

$('#textareaID').on('input change keyup', function () {
  if (this.value.length) {
    // textarea has content
  } else {
    // textarea is empty
  }
});

对于过时的浏览器,您还可以添加selectionchange和propertychange(如在其他答案中提到的)。但是在IE9中,选择更改对我不起作用。这就是为什么我加了keyup。

试试这个

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

试试这个…

$("#txtAreaID").bind("keyup", function(event, ui) {                          

              // Write your code here       
 });

使用输入事件。

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();
  }
});