这似乎是一个非常愚蠢的问题,但我似乎无法弄清楚如何捕获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;
}
答案 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显示您的代码运行正常。