【发布时间】:2023-03-17 02:22:01
【问题描述】:
我正在尝试找到一种方法,使用 onkeydown 或 onkeypress 在 html 文本字段(输入类型 = 文本)上粘贴多个字符,我对 onkeyup 不感兴趣(它有效),所以请不要建议我这个解决方案。另外我对 Jquery 不感兴趣,我不喜欢使用它。我需要适用于所有浏览器的解决方案。
如果您键入一个字符,我可以通过获取事件的字符来做到这一点,但到目前为止,我无法从粘贴 (ctrl+V) 或鼠标中获取一组字符。
您可以查看显示自动完成结果的 Facebook 搜索菜单,它适用于事件:onkeydown 和 onkeypress,并且您注意到在松开手指之前获得了结果,尝试粘贴一些内容(多个字符)然后您在松开手指之前得到结果,如何? Onkeypress 和 onkeydown 不会显示您粘贴或键入的第一件事,因为它们发生在将文本添加到文本字段之前。
如果你想了解我想要的更多,请查看我下面的代码:
<input type="text" id="targetTextField" onkeydown="CapturePastedString(this.id)" />
<script>
function CapturePastedString(id){
var targetTextField=document.getElementById(id);
// below I need to capture the pasted string like:
var pasted_string= function(){.....}
targetTextField.value=pasted_string;
}
</script>
任何帮助都会非常感激,因为我已经尝试了很长时间但还没有找到解决方案。
【问题讨论】:
-
但它与所有浏览器不兼容 :( 这不可能是一个解决方案。我已经检查过了。谁能告诉我这个问题的秘密是什么??一百小时后我真的找不到解决方案搜索并征集开发者?!!!
-
有什么建议吗?自 1 年以来我无法回答这个问题有那么难吗?!!
-
onkeydown 和 onkeypress 事件的问题是实际输入尚未写入文本框。因此,您将无法知道用户在这些事件中输入了什么。查看此线程:stackoverflow.com/questions/146916/…。与您要查找的内容不完全相同,但也许您可以创建一个自定义侦听器。看起来您仍然需要浏览器嗅探,因为并非所有浏览器都以相同的方式实现这一点。
-
非常感谢,我希望所有浏览器都支持创建自定义事件侦听器,我做了一些研究,这并不常见:S,如果你有简单的例子可以阅读将非常感谢,并且会试着尽快得到它。感谢您的提示!
标签: onkeypress onkeydown