小编典典

防止按 Enter 键提交表单

all

我有一个form带有两个文本框,一个 选择 下拉和一个 单选按钮 。当enter按键被按下时,我想调用我的 JavaScript
函数,但是当我按下它时,它form被提交了。

按下键时如何防止form提交?**enter**


阅读 85

收藏
2022-03-28

共1个答案

小编典典

if(characterCode == 13)
{
    return false; // returning false will prevent the event from bubbling up.
}
else
{
    return true;
}

好的,假设您在表单中有以下文本框:

<input id="scriptBox" type="text" onkeypress="return runScript(event)" />

为了在按下回车键时从此文本框中运行一些“用户定义”脚本,而不是让它提交表单,这里有一些 示例 代码。请注意,此功能不会进行任何错误检查,并且很可能仅在
IE 中有效。要做到这一点,您需要一个更强大的解决方案,但您将了解总体思路。

function runScript(e) {
    //See notes about 'which' and 'key'
    if (e.keyCode == 13) {
        var tb = document.getElementById("scriptBox");
        eval(tb.value);
        return false;
    }
}

返回函数的值将提醒事件处理程序不要再冒泡事件,并防止按键事件被进一步处理。

笔记:

有人指出,keyCode现在已弃用。次佳选择which已被弃用

不幸的key是,现代浏览器广泛支持的受欢迎的标准在 IE 和 Edge
中有一些狡猾的行为
。任何早于 IE11
的东西仍然需要polyfill

keyCode此外,虽然已弃用的警告对and来说是相当不祥的which,但删除这些警告将代表对无数旧网站的巨大破坏性变化。出于这个原因,
他们不太可能很快就会去任何地方。

2022-03-28