【发布时间】:2021-09-05 08:36:30
【问题描述】:
<body>
<form>
<label>enter number here: </label>
<input type="number" id="text"/>
<button type="button" id="btn" onclick="calc()">read</button>
</form>
<script>
document.getElementById("text").addEventListener("keyup", function(event) {
if (event.keyCode === 13) {
event.preventDefault();
document.getElementById("btn").click();
}
});
</script>
<br>
<label id = "calculated"></label>
<script>
function calc() {
let inputValue = document.getElementById("text").value;
document.getElementById('calculated').innerHTML = 'your number: ' + inputValue;
}
</script>
</body>
我有一个非常简单的 HTML 文件,其中包含最少的 javascript。当我单击按钮时,它可以完美运行。但是当我敲击键盘上的ENTER模拟按钮点击时,它也会运行代码,但最后会出现错误。
在 Firefox 和 Chrome 上,它会返回错误“未找到”。在 w3schools 上,它会返回“您要求的文件不存在”。而在 stackoverflow 上,它就会消失。
我错过了什么?错误在哪里?让 ENTER 键像鼠标点击一样的技巧是什么?
【问题讨论】:
-
按回车键,您的表单正在提交。您可以使用
preventDefault()来避免它。 stackoverflow.com/questions/8866053/… -
preventDefault()在第一个脚本中。你是说它需要在其他地方吗? -
在您的按键语句中执行该功能,而不是以编程方式单击按钮。您将跳过整个步骤并运行该函数。
-
@user2323030 你的 preventDefault 阻止了 keyup 事件的默认行为,而不是提交。
-
@user2323030 快速修复:在
form元素上添加submit事件的事件处理程序,这将只是preventDefault()
标签: javascript html