我有jQuery代码调用函数:
$('#text_area').bind('input propertychange', function() {...
绑定到函数的元素是文本区域。当我输入和删除文本时,函数被调用得很好,但是当我选择所有文本时,无论是通过热键还是拖动鼠标,然后点击退格键都不会调用该函数。这是我无法调用函数的唯一实例。这是'input propertychange'
事件的预期结果吗?如果是这样,我怎么能改变它按预期工作?请注意,这适用于Chrome,IE和Firefox。
答案 0 :(得分: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');
});
答案 1 :(得分:2)
您需要在文本区域被清除时调用函数。或者您希望在将文本粘贴到文本区域时调用相同的函数。
您可以使用与问题中包含的相同的代码。我已经包含了一个带有这个答案的工作演示
<textarea id='textarea1'>data</textarea>
// ....................
$("textarea").bind('input propertychange', function(){
alert($(this).val());
});
注意:使用jquery插件
<强> DEMO 强>
如果您想阻止同步触发,请使用以下代码
<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!");
});
<强> DEMO1 强>
'Note: Checked with chrome and firefox'
答案 2 :(得分:0)
.bind方法已弃用最新的3 j查询版本。 相反,我们可以使用.on来获得正确答案。
<textarea id="anytextid"></textarea>
<div id="sethere"></div>
此更改的正确文字
$('#anytextid').on('input propertychange', function() {
$('#sethere').html($(this).val().length );
});