此问题在此处已有答案:
JavaScript get clipboard data on paste event (Cross browser)(22个答案)
25分钟前关门了。
下面的代码做三件事...
1.当检测到Ctrl + V键按下时聚焦文本框(粘贴功能);
1.将剪贴板中的任何文本内容粘贴到该框中;
1.最后,它通过单击“提交”按钮提交Web表单。
它运行得很好,除了JavaScript没有像我希望的那样将粘贴的文本发送到输入框变量。该变量在提交后为空。如果在浏览器中执行代码,您可以在URL(“variable=”)中看到这一点。
简而言之,当我按Ctrl + V时,我希望脚本自动粘贴和提交剪贴板中的任何文本内容。
你能告诉我怎么修吗?
第一个
2条答案
按热度按时间u5rb5r591#
与其监视只对一部分用户有效的组合键(并非每个平台都使用Ctrl-V),不如监视
paste
事件。'paste'在值到达框之前触发,就像'keydown'一样。您可以直接使用
event.clipboardData.getData()
访问剪贴板,但是这样会丢失在paste事件之前已经在框中的任何文本。相反,我使用了一个简单但有效的方法setTimeout,在触发提交之前等待粘贴的值到达表单域。(像我在这里做的那样,通过在提交按钮上触发一个click事件来触发表单提交也有点俗气,通常我会直接调用表单的
submit()
方法。)第一个
(It可能还值得一提的是,您正在实质性地改变正常的浏览器行为,并可能引入可访问性问题;除非您用户 * 非常 * 清楚粘贴将触发表单提交,否则我建议您找到一个不同的UX来完成此操作。)
jyztefdp2#
要解决此问题,可以将以下代码添加到JavaScript文件中:
此代码侦听
paste
事件,该事件在用户将文本粘贴到文本框中时触发。当触发该事件时,它使用event.clipboardData.getData('text/plain')
检索粘贴的文本,并使用document.getElementById('box').value = pastedText;
将文本框的值设置为粘贴的文本。然后,您可以修改现有代码,以便在文本粘贴到文本框后自动提交表单:
使用此代码,当用户按Ctrl + V时,文本框将成为焦点,并且在粘贴文本时将自动提交表单。这应确保粘贴的文本作为表单提交的一部分发送。