1

貼り付けイベントをフックして<input type="text">、このテキストを非表示のテキストエリアに強制的に貼り付けたい(次に、テキストエリアのテキストを解析し、「Excel からグリッドビューにデータを貼り付ける」アクションを実行したい)。何かのようなもの:

$('#input1').bind('paste', function(e) {
    // code do paste text to textarea instead of originally targeted input
});

コメントの代わりにどのクロスブラウザー コードを記述すればよいですか?

ありがとう。

4

2 に答える 2

3

focusCtrlキーとVキー、またはShiftキーとInsertキーが押されたときにテキストエリアでイベントを発生させるこのハッキーなソリューションがあります。[はい、コンテキスト メニュー -> 過去には機能しません]

$(document).ready(function(){
    var activeOnPaste = null;
    $('#input1').keydown(function(e){
        var code = e.which || e.keyCode;
        if((e.ctrlKey && code == 86) || (e.shiftKey && code == 45)){
            activeOnPaste = $(this);
            $('#textarea').val('').focus();
        }
    });
    $('#textarea').keyup(function(){
        if(activeOnPaste != null){
            $(activeOnPaste).focus();
            activeOnPaste = null;
        }
    });
});

このコードでは、Ctrl キーと V キーが押されているときにポインターがテキスト領域にフォーカスできるようにします。その時点ではテキストは貼り付けられません。この keydown 関数が起動された後に貼り付けられ、貼り付けられたテキストがテキストエリアに表示されます。その後、そのテキストエリアのキーアップで、#input1フォーカスされます。

これを入力している間、範囲を使用して、キーボードの貼り付けとマウスの貼り付けの両方に解決策がある可能性があることがわかりました。それも何とかしてみようかな…

于 2010-02-09T20:49:58.267 に答える
0

入力フィールドの onChange() イベントに関数をバインドし、この関数が呼び出されるたびにその内容をコピーして、後でデータを処理する必要があります。「貼り付けられた」コンテンツに特に興味がある場合 (そこで何をしようとしているのかはわかりませんが、通常、貼り付けられたコンテンツを追加で処理する必要がある状況にあることは、悪い概念の兆候です) を実装してみてください。入力速度をチェックするカウンター (例: 1 秒あたり xx 文字以上 -> PASTE-Eventcall)

于 2010-08-14T16:37:08.623 に答える