如何绑定到jQuery中文本区域的更改事件?演示

2022-08-30 00:39:43

我想捕获是否发生了任何更改。就像键入任何字符(删除,退格)或鼠标单击并粘贴或剪切一样。是否有可以触发所有这些事件的 jQuery 事件?<textarea>

我尝试了更改事件,但它仅在从组件中跳出后才会触发回调。

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


答案 1

实际上试试这个:

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

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

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

演示

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


答案 2

bind已弃用。用:on

$("#textarea").on('change keyup paste', function() {
    // your code here
});

注意:上述代码将触发多次,每个匹配的触发器类型触发一次。要处理这个问题,请执行如下操作:

var oldVal = "";
$("#textarea").on("change keyup paste", function() {
    var currentVal = $(this).val();
    if(currentVal == oldVal) {
        return; //check to prevent multiple simultaneous triggers
    }

    oldVal = currentVal;
    //action to be performed on textarea changed
    alert("changed!");
});

jsFiddle Demo