我有一點點輕鬆沒收粘貼的文本到我的輸入:jQuery的如何獲得粘貼的內容
<input type="text" id="myid" val="default">
$('#myid').on('paste',function(){
console.log($('#myid').val());
});
的console.log顯示:
default
如何catch
粘貼的文本,並得到可以使用?
我有一點點輕鬆沒收粘貼的文本到我的輸入:jQuery的如何獲得粘貼的內容
<input type="text" id="myid" val="default">
$('#myid').on('paste',function(){
console.log($('#myid').val());
});
的console.log顯示:
default
如何catch
粘貼的文本,並得到可以使用?
現代瀏覽器現在支持input
事件,內容已被粘貼
$('#myid').on('input', function() {
console.log($('#myid').val());
});
之後,將觸發當粘貼到輸入值有時間更新之前paste
事件。
一個解決這個辦法就是推遲值取直到輸入有時間更新:
$('#myid').on('paste', function() {
setTimeout(function() {
console.log($('#myid').val());
}, 100);
});
還有直接從剪貼板而不是從輸入值獲取數據的可能性,通過訪問event.clipboardData
,但是這種技術是實驗性的,在所有瀏覽器中都不支持,並且在我看來比使用input
事件更簡單,甚至是簡單的超時。
你爲什麼超時100毫秒,而不是0? – user2867288 2016-09-26 19:29:32
@ user2867288 - 4年後,我不知道爲什麼,我只是做了? – adeneo 2016-09-26 20:03:53
只是想知道是不是因爲它在某些瀏覽器中無法正常工作,否則(IE),因爲理想情況下大多數人不想在其Web應用程序中添加不必要的延遲。 – user2867288 2016-09-27 13:49:18
試試這個或增加超時太:
$('#myid').on('paste',function(){
console.log(this.value);
});
接受的答案居然是哈克又醜,似乎是經常建議計算器上的粘貼事件。我認爲更好的方式來做到這一點是this
$('#someInput').bind('paste', function(e) {
var data = e.originalEvent.clipboardData.getData('Text');
//IE9 Equivalent ==> window.clipboardData.getData("Text");
});
已經有一個解決方案[jQuery的抓糊輸入] [1],但在我看來,不是很好的一個 [1]:HTTP ://stackoverflow.com/questions/686995/jquery-catch-paste-input – kingpin 2012-02-29 06:08:12
爲什麼這是作爲評論? – kingpin 2012-02-29 06:13:01