我有form
两个文本框,一个选择下拉菜单和一个单选按钮。当enter按键被按下时,我想调用我的 JavaScript 函数,但是当我按下它时,就form
被提交了。
按下键form
时如何防止提交enter?
我有form
两个文本框,一个选择下拉菜单和一个单选按钮。当enter按键被按下时,我想调用我的 JavaScript 函数,但是当我按下它时,就form
被提交了。
按下键form
时如何防止提交enter?
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;
}
}
返回函数的值将提醒事件处理程序不要进一步冒泡事件,并阻止进一步处理按键事件。
它已经指出,keyCode
在现在已经过时。下一个最好的替代which
已经也被弃用。
不幸的key
是,现代浏览器广泛支持的受青睐标准在 IE 和 Edge 中有一些狡猾的行为。任何比 IE11 更旧的东西仍然需要polyfill。
此外,虽然已弃用的警告是关于keyCode
和 的不祥之兆which
,但删除这些警告将代表对无数遗留网站的巨大破坏性变化。因此,他们不太可能很快就去任何地方。
同时使用event.which
和event.keyCode
:
function (event) {
if (event.which == 13 || event.keyCode == 13) {
//code to execute here
return false;
}
return true;
};
更新更干净:使用event.key
. 没有更多的任意数字代码!
注意:旧属性(
.keyCode
和.which
)已弃用。
const node = document.getElementsByClassName("mySelect")[0];
node.addEventListener("keydown", function(event) {
if (event.key === "Enter") {
event.preventDefault();
// Do more work
}
});
node.addEventListener("keydown", ({key}) => {
if (key === "Enter") // Handle press
})
如果您使用 jQuery:
$('input[type=text]').on('keydown', function(e) {
if (e.which == 13) {
e.preventDefault();
}
});
检测整个文档上按下的 Enter 键:
$(document).keypress(function (e) {
if (e.which == 13) {
alert('enter key is pressed');
}
});