捕获onPaste并将事件传递给函数javascript / jQuery

时间:2013-11-02 10:36:10

标签: javascript jquery

这似乎是一个非常愚蠢的问题,但我似乎无法弄清楚如何捕获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; 

}

1 个答案:

答案 0 :(得分: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);
   ....
});

对您的代码进行另外两次更正。

首先,您未在value中定义getdata。您需要使用var value;

启动该功能

其次,您不会将事件传递给getdata。您需要使用getdata(e)调用它。

This fiddle显示您的代码运行正常。