2012-01-24 77 views
2

無論我做什麼,我都無法讓IE選擇()取消後的「粘貼」事件後的值。IE onpaste JavaScript事件

看看這個網址在IE瀏覽器,以及任何粘貼到文本區域:

http://jsfiddle.net/cfApa/1/

文本應粘​​貼後進行選擇。這適用於Chrome瀏覽器,但無法弄清楚如何在IE取消粘貼時如何讓select()工作:

回答

4

試試這個做一個變通方法:

$('textarea').on('paste', function(e) { 
    this.value = 'fooo'; 
    setTimeout(function(){ $(e.target).select(); }, 0); 

    return false; 
}); 

不要問我爲什麼它的作品,我剛剛好奇,找到了解決辦法。

看來,只選擇不粘貼事件處理程序的環境中工作,也許有什麼東西在那個取消選擇瀏覽器之後發生(儘管preventDefault仍然沒有幫助)

+0

男人,這是可怕的,而你是一個真正的人。我遇到了一個'paste'事件和IE的問題,並將整個代碼封裝在一個'setTimeout(function(){/ mycodehere /},0)中;'做到了。 O_O – acdcjunior

0

看一看:http://webcloud.se/log/Selecting-text-with-JavaScript/。 我覺得這是個問題,你可以通過使用

var range = this.createTextRange(); 
range.moveStart("character",0); 
range.moveEnd("character",$(this).html().length); 
range.select(); 
+0

你試過了嗎?它沒有工作?爲什麼是-1? –

+0

謝謝,但嘗試非常類似的代碼,並沒有任何成功。儘管(不幸的是,它不起作用)在http://jsfiddle.net/xesQe/2/實現你的答案。無論你在IE中做什麼「粘貼」,似乎都會有一些神祕的事件在事後引發,並清除了選擇。 – user979672

+0

對不起。很高興知道ori的解決方法。現在在IE中出現了一些小故障,其中回調超時修復。如果你願意,你可以放回-1,我並不是故意要這麼做。 –