大多數瀏覽器都支持無論input
事件,這是當事情被粘貼或解僱,否則增加,如何:
$("#message").on('keyup contextmenu input', function(event) {
alert("ok");
});
Updated Fiddle
N注意使用input
是最常用的方法,當控件得到輸入時觸發,而不管如何,所以如果掛鉤了多個事件(如上所述),則會爲同一輸入獲取多個調用。例如,如果您同時支持keyup
和input
,則在支持input
的瀏覽器上,您將收到兩個電話。同樣,對於支持兩者的瀏覽器,當用戶粘貼時,paste
和input
。
如果您需要支持沒有input
或paste
的瀏覽器,恐怕不幸的答案是您需要進行輪詢。儘管如此,輪詢一次(比方說)250毫秒不要求瀏覽器做大量的工作,你可以擁有,檢測是否有必要:
var message = $("#message");
var events = null;
var previous;
if ('oninput' in message[0]) {
// Browser supports input event
events = "input";
} else if ('onpaste' in message[0]) {
// Browser supports paste event
events = "paste keyup contextmenu";
}
if (!events) {
// Ugh, poll and fire our own
events = "pseudoinput";
previous = message.val();
setInterval(function() {
var current = message.val();
if (current != previous) {
previous = current;
message.trigger(events);
}
}, 250);
}
console.log("Using: " + events);
message.on(events, function(e) {
console.log("Got event: " + e.type);
});
Updated Fiddle
你能給你的答案增加一些解釋嗎? – 2015-01-21 08:44:51