使用onpaste粘貼事件引起的探索


 

  前天項目有一個需求,在Excel文檔里面直接復制商品編碼,然后粘貼到頁面空白處就把相應的數據加載出來。當時我是懵逼的,不知道如何下手。

  以前沒遇到過類似的需求,后來才想起onpaste事件

 

  在使用onpaste事件時遇到了2個問題:

  第1個問題:jquery綁定onpaste事件以后,如何能獲取到粘貼之后的值?

  解決方法:使用如下代碼即可原文出處

<!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title></title> </head> <body> I have a textarea, on paste to that textarea I want to <textarea id="content" cols="50" rows="5"></textarea> </body> <script src="js/jquery-1.11.3.js"></script> <script> jQuery(function($) { $('#content').bind('paste', function(e) { var pastedText = undefined; if(window.clipboardData && window.clipboardData.getData) { // IE pastedText = window.clipboardData.getData('Text'); } else { pastedText = e.originalEvent.clipboardData.getData('Text'); //e.clipboardData.getData('text/plain'); } alert(pastedText); }); }); </script> </html>  

  

  第2個問題在下圖空白處按ctrl+v以后右下角會提示要先輸入客戶名稱,但是要按2次ctrl+v,右下角的彈框才出來;

             而且只有第一次需要按2次,如果刷新頁面或者按第3次ctrl+v以后就可以直接彈出來了,如下圖:

 

   解決方法在經過多次測試之后,我發現是綁定事件的問題,這里不應該用bind,或者on,應該用live

        (這里使用on的話也可以解決這個問題,但是會出現另一個問題,所以沒用)

         很多文章建議停止使用.live()方法,因為它已經被棄用了,並存在一些問題,

         目前我也不知道是什么原因導致這個問題,我只有使用這個方法才能解決這個問題)

 

 

    注:詳解jQuery中 .bind() -.live() - .delegate() - .on() 的區別

         詳解jQuery中 .bind() -.live() - .delegate() - .on() 的區別

       

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM