使用事件侦听器滞后捕获的文本框值

时间:2017-05-19 03:34:22

标签: javascript html

这是我的目标:我希望有一个文本框,当我输入它时,它会捕获我只是键入的内容,以便我可以在控制台中打印它。

我认为这应该很容易,但我遇到了问题。如果我在文本框中输入内容,例如"我在文本框中输入"然后在控制台中打印"我在textbo"中打字。它总是落后一个角色。

为什么?如何才能打印我 键入的内容?

以下是代码:

<body>
<textarea rows="4" cols="50" id="message"></textarea><br>
</body>

<script>
var messageEl = document.getElementById("message");
messageEl.addEventListener("keypress", functionGetMessage);

function functionGetMessage() {
  var message = document.getElementById("message").value;
  console.log("message:" + message);
};
</script>

另外,我不知道我的标题是否合适。

2 个答案:

答案 0 :(得分:0)

使用input事件获取.value元素的当前<input>

&#13;
&#13;
<body>
<textarea rows="4" cols="50" id="message"></textarea><br>
</body>

<script>
var messageEl = document.getElementById("message");
messageEl.addEventListener("input", functionGetMessage);

function functionGetMessage() {
  var message = document.getElementById("message").value;
  console.log("message:" + message);
};
</script>
&#13;
&#13;
&#13;

答案 1 :(得分:0)

&#13;
&#13;
var messageEl = document.getElementById("message");
messageEl.addEventListener("keyup", functionGetMessage);

function functionGetMessage() {
  var message = document.getElementById("message").value;
  console.log("message:" + message);
};
&#13;
<input id="message">
&#13;
&#13;
&#13;

使用Keyup事件而不是按键。或者您可以使用输入