我有一个表单,其中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;
}
警报永远不会触发。警报放在函数的顶部也不会触发。然而,对于退出键,当我将完全相同的代码放入时,如果检查key == 27
,则会触发警报。
有几乎同一主题的其他问题,比如这一个:Prevent Users from submitting form by hitting enter #2
不过,我没有使用jQuery和我只是想阻止提交了这一领域的进入。但是,在各种问题中提到的其他解决方案似乎都行不通。
EDITTED:解释密钥设置的位置。
什么是 '关键'在你的代码?我试图理解你的其他功能 - 也许尝试做alert(key),看看这个函数是否实际上被调用,以及'key'的值是什么 – Roman 2010-01-10 18:04:55
尝试过提醒,函数根本没有被调用 - 更不用说关键了。 – 2010-01-10 18:11:22