这似乎是一个非常愚蠢的问题,但我似乎无法弄清楚如何捕获 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;
}
最佳答案
您的问题是您已经为事件处理程序指定了名称:
$("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);
....
});
对代码的另外两项更正。
首先,您没有在 getdata
中定义 value
。您需要使用 var value;
其次,您没有将事件传递给getdata
。您需要使用 getdata(e)
调用它。
This fiddle显示您的代码完美运行。
关于javascript - 捕获 onPaste 并将事件传递给函数 javascript/jQuery,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19741032/