2011-08-02 11 views
2

jQueryのテキスト入力に貼り付けイベントをバインドする際に問題があります。ユーザーが貼り付けたときにイベントが発生しますが、コールバックで$(this).val();が貼り付けられた新しい値ではなく古い値を返します。これをChromeでハックすることはできましたが、Firefoxではハックすることはできませんでした。jQueryペーストイベントの問題を修正しました

あなたがFacebookのステータスボックスにURLを貼り付けたときの機能は、そのURLのプレビューをすぐに生成するようなものです。

私は、テキストボックスの値が更新される前に貼り付けイベントコールバックが呼び出されていると考えています。しかし、私は間違っている可能性があります。なぜ誰かがこれがどうして起こっているのかについていくつかの洞察を持っているなら、私はすべて耳にします。

私はここでの問題をilustrateするJSFiddleを作りました:http://jsfiddle.net/ybqPp/1/

任意およびすべてのヘルプは高く評価されています。 ありがとう!

答えて

1

厥 - 私はそれが遅れている知っている

は、ここでは馬の口から言葉です。


IMHOは、直接的な方法はなく、ハッキングが気に入らない場合もあります。だから、そのかなり良く、それを忘れて:)

MDNがelement.onpasteにノート、

は貼り付けされているテキストを取得するために何のDOM-唯一の方法は現在ありません。 その情報を取得するには、nsIClipboardを使用する必要があります。

これをチェックアウト:JavaScript get clipboard data on paste event (Cross browser)

+1

あなたの最後のリンクが多くの助けになりました。10ms 'setTimout'で' $(this).val() 'を囲むとIwantと同じように動作しますが、それでもまだハックするので十分満足できません。他の誰かがより洗練されたソリューションを持っていない限り、私はあなたにその日の終わりまでに答えを与えるでしょう –

0

Firefoxは、Webkit(Chromium)やIEと異なり、Firefoxではwindow.clipboardData.getData( "text")やevent.clipboardData.getData( "text")を使用できません。

IE9では(セキュリティ設定によっては)、あなたのウェブサイトがクリップボードにアクセスしようとしていることを示すアクセス権バーが表示されます。あなたのフィドルに、あなたはイベントがonpasteにバインドされているテキストボックスの値を取得しているので、http://support.mozilla.com/en-US/kb/Granting%20JavaScript%20access%20to%20the%20clipboard

+0

を、私はそれを認識してんだけど、あなたはフィドルを見た場合、あなたが私はクリップボードのデータを取得しようとしていないよ見ることができます。問題は、テキストボックスの値が更新される前に貼り付けイベントコールバックが呼び出されることです。 –

+0

@Greg:あなたはonpastecompleteイベントの権利を探していますか?私はその場所には全くいないと思う。 – naveen

関連する問題