我正在尝试评估粘贴后输入到文本区域的一些数据。当我使用 onkeyup 时,它会检测是否正常,并且当用户使用 Cntl-V 粘贴时评估是否正常。当他们右键单击并选择粘贴时,它什么也不做。我将 onkeyup 更改为 onpaste,它同时检测 Cntl-V 和右键单击粘贴,但数据不存在。我知道在执行实际粘贴之前触发了 onpaste,因此我尝试使用 setTimeout() 延迟评估,但即使延迟 5 秒,它也不会在函数函数完成之前获取数据。无论我做什么,我似乎都无法计算输入的项目数量。这是我的代码:
function delayStart() {
alert("delayStart() function");
var inData = " ";
setTimeout(function()
{inData = document.getElementById("loanNumberPaste").value},
5000);
var iData = inData.value;
alert("iData = " + iData);
setTimeout(fnUpdCt(iData),5000);
}
function fnUpdCt(vId) {
var strVId = vId.value;
alert("fnUpdCt() function \n" +
"vId = " + strVId);
var i;
var iVal = vId.value;
var vCt = 0;
iVal = iVal.replace(/\s/g,' ');
iVal = iVal.split(' ');
for (i=0; i < iVal.length; i++) {
if (iVal[i].length > 0) {vCt++;}
}
document.getElementById("loanNumberCount").value = vCt;
}
<textarea id="loanNumberPaste" rows=17 cols=37 tabindex="1"
onpaste="delayStart();";onkeyup="fnUpdCt(this);"></textarea>
您可以提供的任何建议将不胜感激。