一尘不染

在JavaScript中输入按键事件

javascript

我有一个form带有两个文本框,一个 选择 下拉菜单和一个 单选按钮
。当enter按下该键时,我想调用一个Javascript函数(用户定义),但是当我按下它时,将提交表单。

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


阅读 597

收藏
2020-04-25

共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)" />

为了在按下Enter键时从此文本框中运行某些“用户定义”脚本,而不让其提交表单,下面是一些 示例
代码。请注意,此功能不执行任何错误检查,很可能仅在IE中有效。为此,您需要一个更强大的解决方案,但您将获得一般的想法。

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

返回该函数的值将警告事件处理程序不要再使事件冒泡,并且将防止进一步处理keypress事件。

注意:

它已经指出,keyCode在现在已经过时。下一个最好的替代which已经也被弃用。

不幸的key是,受现代浏览器广泛支持的受人欢迎的标准在IE和Edge中具有某些[躲避行为。IE11之前的任何版本都仍需要polyfill。

此外,尽管过时的警告对于keyCode和都是不祥的警告which,但删除这些警告将意味着对不计其数的旧版网站的巨大突破。因此,他们不太可能很快就去任何地方。

2020-04-25