在textarea中捕获粘贴的输入

时间:2010-10-27 17:30:47

标签: javascript jquery paste

使用javascript(Jquery)。

在网上搜索,似乎不可能。到目前为止,我有类似的东西:

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

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

        alert(data);



    });

但是在这个阶段数据是空的...有没有办法在粘贴之后捕获粘贴的输入?好像应该有办法。

发生粘贴时,不会触发Jquery中的

键盘事件。

有什么想法吗?

3 个答案:

答案 0 :(得分:4)

这是我决定做的事情。请注意,我只需要抓取粘贴的内容。

$(document).ready(function () {         

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

});



function DisplayPastedData() {

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


}

我已经随意选择了100毫秒等待,这与我粘贴的最大数据非常吻合。

答案 1 :(得分:2)

并非所有浏览器都支持相同的复制/粘贴功能。以下是哪个浏览器支持功能的图表:

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

如果浏览器支持捕获复制/粘贴事件,jQuery应该可以正常工作。我建议您测试每个目标浏览器。

另一种方法是使用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;
     }
}

答案 2 :(得分:0)

相当旧的线程,但您现在可能会使用FilteredPaste.js(http://willemmulder.github.com/FilteredPaste.js/)。它可以让你控制哪些内容被粘贴到textarea或contenteditable,你将能够随意过滤/更改/提取内容。