14

JQuery を使用して、テキスト領域の貼り付けイベントを取得する必要があります。次のコードを試しましたが、うまくいきません...

$(document).ready(function()
{ 
  $('#txtcomplaint').keyup(function()
  {  
     TextCounter('txtcomplaint','counterComplaint', 1000 ); 
  }) 
  $('#txtcomplaint').onpaste(function()
  {  
     alert()
     //TextCounter('txtcomplaint','counterComplaint', 1000 ); 
  }) 
});
4

4 に答える 4

27

このようなことができます

$("#txtcomplaint").bind('paste', function(e) {
    var elem = $(this);

    setTimeout(function() {
        // gets the copied text after a specified time (100 milliseconds)
        var text = elem.val(); 
    }, 100);
});
于 2010-02-11T05:33:13.390 に答える
6
$('#txtcomplaint').bind('paste', function(e){ alert('pasting!') });

追加のリソースについては、こちらをご覧ください。

于 2010-02-11T05:20:41.263 に答える
2

私は最終的にこれを 1) 入力、2) ドラッグ アンド ドロップ、3) Ctrl-V、および 4) マウス クリックのコンテキスト メニューから貼り付けることができるようになりましたが、貼り付けとドロップ ハンドラーをドキュメントにアタッチする必要がありました (ここで「taValue」は、監視しようとしているテキストエリアのクラスです):

        $(document).on("paste drop", '.taValue', function (e) {
          myHandler.call(e.target, e);
        });

テキストエリアのキーアップ イベントは既に機能しています。次の問題は、テキストエリア内のテキストが実際に変更される前に、貼り付けとドロップのイベントが発生することでした。私の場合、新しいテキストを元のテキストと比較したかったのです。私はsetTimeoutに頼った:

    function myHandler(e) {
      if (e && (e.type === "drop" || e.type === "paste")) {
        var me = this;
        setTimeout(function () { myHandler.call(me) }, 200);
      }... [more code to do the comparison]

このようなことにタイムアウトを使用するのは嫌いですが、うまくいきます (100ms 間隔を試してみたところ、うまくいきませんでした)。

于 2015-04-09T19:59:03.930 に答える