2012-02-29 7 views
24

貼り付けられたコンテンツを取得する方法を、私は貼り付けたテキストをcatchと取得方法jqueryの私は少し問題私の入力に貼り付けたテキストをキャッチしてい

default 

使用する準備ができて?

+1

である[1]それは、[1] 1 私には非常に良いではないようだと思います://stackoverflow.com/questions/686995/jquery-catch-paste-input – kingpin

+0

これはなぜコメントとして行われますか? – kingpin

答えて

31

最近のブラウザは現在値が更新する時間を持って前にpasteイベントが発生した入力に貼り付ける場合、コンテンツが

$('#myid').on('input', function() { 
    console.log($('#myid').val()); 
}); 

を貼り付けられた後に起動しますinputイベントをサポートしています。
これを解決する1つの方法は、入力が更新する時間があったまで値のフェッチを延期することです:

$('#myid').on('paste', function() { 
    setTimeout(function() { 
     console.log($('#myid').val()); 
    }, 100); 
}); 

クリップボードからではなく、入力値から直接データを取得する可能性もあります、 event.clipboardDataにアクセスすると、その技術は実験的であり、すべてのブラウザでサポートされているわけではなく、私の意見ではinputイベントを使用するよりもハッキーです。

+1

なぜタイムアウトを0ではなく100ミリ秒にしましたか? – user2867288

+3

@ user2867288 - 4年後、なぜ、私はやったのか分かりません。 – adeneo

+0

ほとんどの人が不必要な遅延を自分のWebアプリケーションに追加したくないので、一部のブラウザでは機能しなかったため、そうでなければ(IE)、それが問題なのかどうか疑問に思っています。 – user2867288

-3

これを試すか、あまりにもタイムアウトを追加:

$('#myid').on('paste',function(){ 
      console.log(this.value); 
    }); 
41

受け入れ答えは、実際にハックと醜いです、stackoverflowの上のpasteイベントのためにかなり頻繁に提案しているようです。 http:私はそれを行うには良い方法は、溶液は[jqueryのキャッチペースト入力]既に存在しthis

$('#someInput').bind('paste', function(e) { 
    var data = e.originalEvent.clipboardData.getData('Text'); 
    //IE9 Equivalent ==> window.clipboardData.getData("Text"); 
}); 
+4

これは私のためにIE 9では動作しませんが、 'setTimeout'メソッドは動作します。 – BateTech

+3

window.clipboardData.getData( "Text")< - IE9は上記と等価です。 –

+0

@toddv、nice one。 – cateyes

関連する問題