2

这似乎是一个非常愚蠢的问题,但我似乎无法弄清楚如何捕获onPaste事件,并将其传递给要处理的函数。

$("input").on({
  'paste': function getdata(e) {

   var value = getdata();
   alert("you pasted" + value);
},
   'keyup': function getdata(e) {

    var value = getdata();
    alert("you pasted" + value);
}

});


function getdata(e) {
    if(window.clipboardData && window.clipboardData.getData) {
        value = window.clipboardData.getData('Text');
    } else if (e.originalEvent.clipboardData && e.originalEvent.clipboardData.getData) {
        value = e.originalEvent.clipboardData.getData('text/plain');
    }

    return value; 

}
4

1 回答 1

3

你的问题是你给你的事件处理程序一个名字:

$("input").on({
  'paste': function getdata(e) {

   var value = getdata();
   alert("you pasted" + value);
   ....
});

您已经调用了事件处理程序getdata。因此,当您getdata()在函数内部调用时,它会再次运行事件处理程序。这显然会导致无限循环。

删除命名函数表达式:

$("input").on({
  'paste': function (e) {

   var value = getdata(e);
   alert("you pasted" + value);
   ....
});

对您的代码的另外两个更正。

首先,您没有定义valuein getdata。您需要启动该功能var value;

其次,您没有将事件传递给getdata. 你需要用getdata(e).

这个小提琴显示您的代码运行良好。

于 2013-11-02T10:47:50.813 回答