4

javascript(Jquery)を使用します。

オンラインで検索しましたが、不可能のようです。これまでのところ、私は次のようなものを持っています:

$("#textAreaId").bind('paste', function (e) {
        alert('pasting text!!!!');

        var data = $("#taData").val();

        alert(data);



    });

しかし、この段階ではデータは空です...貼り付けられた後に貼り付けられた入力をキャプチャする方法はありますか?方法があるはずのようです。

貼り付けが発生しても、Jqueryのkeyupイベントはトリガーされません。

何か案は?

4

3 に答える 3

4

これが私がやろうと決めたことです。貼り付けたコンテンツを取得するだけでよいことに注意してください。

$(document).ready(function () {         

    $("#taData").bind('paste', function (e) {
        setTimeout(function () { DisplayPastedData(); }, 100);
    });    

});



function DisplayPastedData() {

    var data = $("#taData").val();
    alert('input pasted ' + data);


}

100 ミリ秒の待機時間を任意に選択しました。これは、貼り付けたデータの最大数でうまく機能します。

于 2010-10-27T22:07:10.657 に答える
2

すべてのブラウザーが同じコピー/貼り付け機能をサポートしているわけではありません。以下は、どのブラウザーがどの機能をサポートしているかのチャートです。

http://www.quirksmode.org/dom/events/cutcopypaste.html

ブラウザがコピー/貼り付けイベントのキャプチャをサポートしている場合、jQuery は正常に動作するはずです。対象となる各ブラウザをテストすることをお勧めします。

もう 1 つの方法は、jQuery の「data」プロパティを使用して、入力フィールドが変更されたことを検出することです。コード例を含む記事は次のとおりです。

http://www.mydogboris.com/2009/10/using-jquery-data-feature-to-detect-form-changes/

記事から:

var formChanged = false;

$(document).ready(function() {
     $('#my_form input[type=text].editable, #my_form textarea.editable').each(function (i) {
          $(this).data('initial_value', $(this).val());
     });

     $('#my_form input[type=text].editable, #my_form textarea.editable').keyup(function() {
          if ($(this).val() != $(this).data('initial_value')) {
               handleFormChanged();
          }
     });

     $('#my_form .editable').bind('change paste', function() {
          handleFormChanged();
     });

     $('.navigation_link').bind("click", function () {
          return confirmNavigation();
     });
});

function handleFormChanged() {
     $('#save_or_update').attr("disabled", false);
     formChanged = true;
}

function confirmNavigation() {
     if (formChanged) {
          return confirm('Are you sure? Your changes will be lost!');
     } else {
          return true;
     }
}
于 2010-10-27T18:30:47.567 に答える
0

かなり古いスレッドですが、代わりに FilteredPaste.js ( http://willemmulder.github.com/FilteredPaste.js/ ) を使用できます。どのコンテンツをテキストエリアまたは contenteditable に貼り付けるかを制御でき、コンテンツを自由にフィルタリング/変更/抽出できます。

于 2013-02-02T16:26:12.740 に答える