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 应该可以正常工作。我建议测试您的每个目标浏览器。

另一种方法是使用 jQuery 的“数据”属性来检测输入字段是否已更改。这是一篇带有示例代码的文章:

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/ ) 代替。它可以让您控制将哪些内容粘贴到 textarea 或 contenteditable 中,并且您将能够随意过滤/更改/提取内容。

于 2013-02-02T16:26:12.740 回答