2011-06-18 5 views
7

私は、マウスを使用して(すなわちHello)のテキストを貼り付ける際に、次の関数は空のポップアップがスローされますことを発見した:setTimeout()関数を使用せずに貼り付けテキストを取得することはできますか?

$('input:text').onpaste = function() 
{ 
    alert($('input:text').val()); 
}); 

事がonpasteイベントが発生しているときに、ある、テキストではありませんまだ実際に入力フィールドに貼り付けられています(少なくとも私の推測です)。だから、に機能を変更する:

$('input:text').onpaste = function() 
{ 
    setTimeout(function() 
    { 
     alert($('input:text').val() 
    }, 100); 
} 

は、入力フィールドに貼り付けたときにテキストHelloでポップアップを示すことで正しい結果を与えます。

私の質問:setTimeout()機能を使用せずに貼り付けたテキストをキャッチする可能性はありますか?この回避策はかなり汚れているので、私はそれを使用する必要はありません。

kkthxbai xon1c

+0

http://stackoverflow.com/a/19269040/530153 –

答えて

11

を更新している場合、あなたはまた、あなたが最新のブラウザでは、この方法

http://jsfiddle.net/pxfunc/KDLjf/

$('input').bind('input', function(e) { 
    console.log($(this).val()); 
}); 
+1

入力がペーストであるかどうかを確認するにはどうすればよいですか? – user3281466

0

データが貼り付けされて得るために、この方法を試してください。

$("input:text").bind('paste', function(e) { 
    var text = e.event; 
    alert(text); 
}); 

タイムアウト値は、入力フィールドに実際にあるように、更新されたDOMを取得するために必要とされています。入力ボックスがhttp://api.jquery.com/change

+3

アラートに「定義されていません」と表示されています。例を挙げてください。 – Diego

1
$('input:text').bind('paste', function() { 
    alert($(this).val()); 
}); 
+0

貼り付けられた値がまだ入力に設定されていないため、このコードは機能しません。私はChromeを使ってテストしました。 –

0

Iドンをサポートし、代わりにoninputイベントを使用することができますチェックするために変更イベントを使用することができますalert()が実行されたときに入力値が変更されていないので、IE8でベローコードが動作するとは思わない。

$('input').bind('input paste', function(e) { 
    alert($(this).val()); 
}); 

FirefoxとChromeでは、正常に動作します。

関連する問題