3

我有调用这样的函数的jQuery代码:

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

绑定到函数的元素是文本区域。当我键入和删除文本时,该函数被调用得很好,但是当我通过热键或拖动鼠标选择所有文本时,然后按退格键不会调用该函数。这是我无法调用函数的唯一实例。这是预期的'input propertychange'事件吗?如果是这样,我该如何更改它以按预期工作?请注意,这适用于 Chrome、IE 和 Firefox。

4

3 回答 3

4

这适合您的目的吗?

$('#text_area').on('keyup', function() {
    console.log('called');
});

小提琴:http: //jsfiddle.net/KyleMuir/ruJZD/

此外,从 jQuery 1.7 .on()( http://api.jquery.com/on/ ) 开始,是绑定事件的首选方式。

编辑:由于有人在右键单击粘贴文本后,这里有一个更新:

$('#text_area').on('keyup paste', function() {
    console.log('called');
});

小提琴:http: //jsfiddle.net/KyleMuir/ruJZD/9/

于 2013-10-11T21:04:21.173 回答
3

当您的文本区域被清除时,您需要调用一个函数。或者您想在将文本粘贴到文本区域时调用相同的函数。

您可以使用问题中包含的相同代码。我在这个答案中包含了一个工作演示

 <textarea id='textarea1'>data</textarea>

//........

$("textarea").bind('input propertychange', function(){
  alert($(this).val());
});

注意:使用 jquery 插件

演示

如果要防止同时触发,请使用以下代码

<textarea id="textarea"></textarea>

//.......

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

    text = Val;

    alert("changed!");
});

演示1

'Note: Checked with chrome and firefox'
于 2015-02-20T11:47:29.843 回答
0

.bind 方法已弃用最新的 3 j 查询版本。相反,我们可以使用 .on in 来获得正确答案。

 <textarea id="anytextid"></textarea>
<div id="sethere"></div>

此更改的正确文本

$('#anytextid').on('input propertychange', function() {
    $('#sethere').html($(this).val().length );
});
于 2017-09-18T14:03:07.240 回答