我需要检查所有会改变我的文本输入内容的事件。到目前为止,我有处理键盘,剪切和粘贴。但内容也可以通过突出显示文本并单击删除或撤消来更改。有没有办法听取这些事件?输入删除/撤销的事件处理程序
$('#input').on('paste cut keyup ',function() {
//add delete and undo to listner
});
我需要检查所有会改变我的文本输入内容的事件。到目前为止,我有处理键盘,剪切和粘贴。但内容也可以通过突出显示文本并单击删除或撤消来更改。有没有办法听取这些事件?输入删除/撤销的事件处理程序
$('#input').on('paste cut keyup ',function() {
//add delete and undo to listner
});
你有比这更多的问题,你也不必担心与浏览器自动填充功能等。由于这个原因,HTML5包含了现代浏览器中包含的input
事件。
捕捉每一个可能的变化事件(*),浏览器会让你捕捉的方法见this answer,不费一枪超过每变化一次。
(*)看起来他们忘了cut
,所以也加入了。
你至少缺少的按键和变化。我不知道“变化”是否适用于这些行为,我知道当输入元素失去焦点时,变化通常只是被调用。
我建议使用和input
:http://jsfiddle.net/vKRDR/
var timer;
$("#input").on("keydown input", function(){
var self = this;
clearTimeout(timer)
// prevent event from happening twice
timer = setTimeout(function(){
console.log(self.value);
},0);
});
KEYUP不会赶上特殊键,如Ctrl和输入会抓住的东西,如粘贴删除等,甚至从上下文菜单中。
通过使用keydown和输入,事件立即发生,而不是等待用户释放按钮或模糊输入。
的keydown完成大部分工作,投入拿起其中的keydown不能处理它,如上下文菜单中删除/粘贴/剪切
谢谢你的jsfiddle – user2014429 2013-02-20 22:38:14
请注意,经过进一步测试...你应该能够摆脱只是使用输入,但我不知道如何向后兼容它是与IE – 2013-02-20 22:40:57
iOS失败这种方式;) – yckart 2013-02-20 23:08:17
利用这些,他们会得到所有的变化:
$(container).bind('keyup input propertychange paste change'), function (e){});
也,你可以做一两件事来检查这个onchange事件里面的值:
$(function(){
$('input').on('keyup input propertychange paste change', function(){
if ($(this).data('val')!=this.value) {
alert('Something has been changed in the input.');
}
$(this).data('val', this.value);
});
});
希望,这将工作在你的情况。 :)
谢谢你('DOMAttrModified textInput input change keypress paste focus',function(){// handle});我在这里找到了答案: – user2014429 2013-02-20 22:34:48