我需要檢查所有會改變我的文本輸入內容的事件。到目前爲止,我有處理鍵盤,剪切和粘貼。但內容也可以通過突出顯示文本並單擊刪除或撤消來更改。有沒有辦法聽取這些事件?輸入刪除/撤銷的事件處理程序
$('#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