【发布时间】:2011-01-03 12:29:09
【问题描述】:
我有一个表单,onkeyup 会为其触发为某些字段创建建议框。我能够捕获向上箭头、向下箭头和转义的击键,并相应地使用它们在建议框中移动或关闭它。我想使用 enter 将他们的选择移动到触发建议的输入字段中。但是,我似乎无法捕捉回车键。
控件永远不会进入我的 javascript 建议函数。相反,表单只是提交。我已经尝试过 noEnter 函数,这些函数在输入时返回 false 传递给有问题的输入元素的 onkeypress 和 onkeydown,没有骰子。该表单似乎从所有输入事件处理程序中获取控制权并在它们中的任何一个可以做任何事情之前提交自己。
表单提交是否会覆盖字段中的所有其他事件处理程序,或者这里还有其他事情发生吗?如果是这样,有什么办法可以解决吗?
这是有问题的元素(删除了一些值):
<input type="text" name="myInput" id="myInputField" size="22" onkeypress="noEnter(event)" onkeyup="suggest(event)" onblur="hideSuggestions()">
这是捕捉它的 javascript:
var evnt = (event ? event : window.event);
var key = evnt.keyCode;
if(key == 13) { // Handle Enter
alert("ENTER PRESSED.");
hideSuggestions();
return false;
}
警报永远不会触发。放在函数顶部的警报也不会触发。然而,对于转义键,当我将完全相同的代码放入 if 检查 key == 27 时,警报就会触发。
几乎同一主题还有其他问题,比如这个:Prevent Users from submitting form by hitting enter #2
但是,我没有使用 jquery,我只想阻止 enter 提交这一字段。但各种问题中提到的其他解决方案似乎都不起作用。
已编辑:解释密钥的设置位置。
【问题讨论】:
-
您的代码中的“键”是什么?我正在尝试了解您的其余功能 - 也许尝试执行 alert(key) 并查看该功能是否实际被调用以及“key”的值是什么
-
尝试过警报,该函数根本没有被调用——更不用说键了。
标签: javascript html forms javascript-events