小编典典

我怎么知道用户正在输入或粘贴?

jsp

在我的JSP的文本字段中,我想知道用户是输入数据还是粘贴。如何使用javascript识别此内容?

编辑: 根据安迪的回答,我知道我该怎么做,但是仍然对那些家伙如何写 onpaste 事件 感到好奇


阅读 242

收藏
2020-06-08

共1个答案

小编典典

Safari,Chrome,Firefox和Internet
Explorer均支持该onpaste事件(不确定Opera)。锁定onpaste事件,只要粘贴了内容,您就可以捕获。


编写此代码非常简单。使用html将事件处理程序添加到您的输入中:

<input type="text" id="myinput" onpaste="handlePaste(event);">

或JavaScript-DOM:

var myInput = document.getElementById("myInput");

if ("onpaste" in myInput) // onpaste event is supported
{
    myInput.onpaste = function (e)
    {
        var event = e || window.event;
        alert("User pasted");
    }
}
// Check for mutation event support instead
else if(document.implementation.hasFeature('MutationEvents','2.0'))
{
    /* You could handle the DOMAttrModified event here, checking 
       new value length vs old value length but it wouldn't be 100% reliable */
}

根据我的阅读,Opera不支持该onpaste事件。您可以使用该DOMAtrrModified事件,但是即使脚本更改了输入框的值也会触发该事件,因此您必须谨慎使用它。不幸的是,我对突变事件不熟悉,所以我不想写一个我不敢相信的例子来弄乱这个答案。

2020-06-08