Javascript没有从输入字段中读取单个字符

Posted

技术标签:

【中文标题】Javascript没有从输入字段中读取单个字符【英文标题】:Javascript not reading single character from input field 【发布时间】:2021-01-19 06:56:30 【问题描述】:

我在 javascript 中遇到问题。在下面的代码中,有 2 个输入字段,id 分别为“v1”和“v2”。当我尝试仅使用单个字符记录输入字段 v1 的值时,控制台中没有显示任何内容。输入第二个字符后,控制台显示第一个字符。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <input type="text" id="v1" /><br>
    <input type="text" id="v2" />

    <script>

        document.getElementById("v1").onkeypress = function() myFunction();

        function myFunction() 
            console.log(document.getElementById("v1").value);
            document.getElementById("v1").style.backgroundColor = "red";
         
    </script>
</body>
</html>

输出:

【问题讨论】:

查看***.com/questions/3396754/… Keypress 捕获key-down之前的文本,切换到key-up。 keypress 事件在控件值更新之前触发。尝试使用change 事件。 这能回答你的问题吗? onKeyPress Vs. onKeyUp and onKeyDown 【参考方案1】:

使用onkeyup 代替onkeypress。它不能与onkeypress 一起使用的原因是因为它在按下键时会生成控制台。到那时,该值还没有进入输入字段,这意味着它会给出已经存在的值。在输入字段中输入字符时,使用onkeyup 执行。

document.getElementById("v1").onkeyup = function() 
  myFunction()
;

function myFunction() 
  console.log(document.getElementById("v1").value);
  document.getElementById("v1").style.backgroundColor = "red";
<input type="text" id="v1" /><br>
<input type="text" id="v2" />

【讨论】:

以上是关于Javascript没有从输入字段中读取单个字符的主要内容,如果未能解决你的问题,请参考以下文章

如何从用户那里读取单个字符?

PHP CLI:如何从 TTY 读取单个字符的输入(无需等待回车键)?

C ++从文件中读取多行到单个字符串

字符输入流读取文本文件ReaderFileReaderBufferedReader

字符输入流读取文本文件ReaderFileReaderBufferedReader

从输入字段读取属性时 HTML 编码丢失