按下 ENTER 键重新加载页面

3
<input type="text" onkeypress="if (event.keyCode==13){ func_name(this.value);}"    id="userinput"/>

我有一个文本框,在按下回车键时调用了一个函数。问题是页面重新加载了,而我只调用了一个js函数。请告诉我我做错了什么。


页面上有任何按钮吗?也许它们正在被调用? - Daniel Casserly
这段代码是否在任何表单中?当你按下任何字段的回车键时,表单会自动提交。你可以通过在 onkeypress 中返回 false 来阻止它。 - Anoop
是的,我有,但所有按钮的类型都设置为“button”。 - shadyinside
@Shusl...是的,它在一个表单内。我调用了许多函数,但没有一个能重新加载页面,只有这个可以。 - shadyinside
2个回答

5
表单通过按下回车键进行提交。您可以将onsubmit事件附加到表单,并返回false以防止提交(并返回true以进行提交)。您可以使用此功能在提交之前验证数据,或拦截您的keypress事件。
或者,如下所述,您可以使用event.preventDefault()来防止按下回车键触发提交。
类似于这样...
<form action=".">
    <input type="text" onkeypress="console.log('happy days'); event.preventDefault()">
</form>

如果我将表单设置为onsubmit="return false",那么js函数就不起作用了。 - shadyinside

5

我知道这是一条旧消息,但我通过添加"return false"来解决它:

<input type="text" onkeypress="if (event.keyCode==13){ func_name(this.value);return false;}" id="userinput"/>

也许对于其他遇到类似问题的人来说,这可能是有用的。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接