我需要检查所有会更改文本输入框内容的事件。目前我已经处理了 keyup、cut 和 paste 事件,但高亮文本并点击删除或撤销也可以更改文本内容。是否有办法监听这些事件?
$('#input').on('paste cut keyup ',function() {
//add delete and undo to listner
});
我需要检查所有会更改文本输入框内容的事件。目前我已经处理了 keyup、cut 和 paste 事件,但高亮文本并点击删除或撤销也可以更改文本内容。是否有办法监听这些事件?
$('#input').on('paste cut keyup ',function() {
//add delete and undo to listner
});
我建议使用 keydown
和 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之类的特殊键,而input将捕获来自上下文菜单的粘贴、删除等内容。
通过使用keydown和input,事件会立即发生,而不是等待用户释放按钮或模糊输入。
keydown完成大部分工作,input则处理keydown无法处理的内容,例如上下文菜单中的删除/粘贴/剪切操作。
$(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);
});
});
document.getElementById("my_id_name").oninput = function(e) {
if ((e.inputType == 'deleteContentBackward') || (e.inputType == 'deleteContentForward') || (e.inputType == 'deleteByCut')){
$('my_id_name').value = null
})
}
你至少缺少了keypress和change事件。我不知道"change"是否适用于这些操作,但我知道当输入元素失去焦点时通常会触发change事件。
$('#input').on('change', function(){});