【问题标题】:How to capture a string using onkeydown before it received by the text field如何在文本字段接收到字符串之前使用 onkeydown 捕获字符串
【发布时间】: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


【解决方案1】:

试试它的 onkeydown 处理程序。您可以从那里获取 keyCode,然后获取密钥。

&lt;input type="text" value="" onkeydown="alert(String.fromCharCode(event.keyCode));"/&gt;

请注意,由于键盘上的所有字符都是大写字母,因此您也会得到大写字母。上面的代码会显示按下的键

【讨论】:

    猜你喜欢
    • 2018-03-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-08
    • 1970-01-01
    • 2014-09-19
    • 1970-01-01
    • 2019-06-24
    相关资源
    最近更新 更多