在我的 JSP 的文本字段中,我想知道用户是在输入数据还是只是在粘贴。如何使用 javascript 识别它?
编辑:根据安迪的回答,我知道我该怎么做,但仍然好奇那些人是如何写onpaste事件的。
在我的 JSP 的文本字段中,我想知道用户是在输入数据还是只是在粘贴。如何使用 javascript 识别它?
编辑:根据安迪的回答,我知道我该怎么做,但仍然好奇那些人是如何写onpaste事件的。
Safari、Chrome、Firefox 和 Internet Explorer 都支持该onpaste
事件(不确定 Opera)。锁定onpaste
事件,无论何时粘贴某些内容,您都可以捕捉到。
<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
事件,但即使脚本更改了输入框的值,它也会触发,因此您必须小心处理它。不幸的是,我不熟悉突变事件,所以我不想写一个我没有信心的例子来搞砸这个答案。
计算按键并确保它与文本框中的内容匹配,粘贴不会像文本框中那样包含完整的字符数。
我知道对于 textarea,您可以使用事件捕获粘贴onPaste
事件。
HTML:
<textarea id="textEditor" />
在 JS 中:
var editor = document.getElementById("textEditor");
if (isIE /* determine this yourself */) {
editor.onPaste = function() {
}
} else {
//Not IE
editor.onpaste = function() {
}
}
//The capitalisation of the onpaste (non-IE) and onPaste (IE) makes a difference.
至于打字,有onKeyDown
, onKeyUp
,onKeyPress
事件。
希望这可以帮助。
可能与 SO 相关的问题 IE onPaste 事件使用 javascript 而不是 HTML
你永远不会确定。即使在截取键输入时,用户也可能已经使用上下文菜单使用鼠标进行粘贴。访问剪贴板(将输入与剪贴板内容进行比较)不会按照您想要的方式工作,因为它是严格的仅限用户操作。未经用户明确同意,您无法以编程方式访问(浏览器将显示确认消息)。