我有一个用ASP.NET构建的表单。第一个控件允许用户从自动完成列表中选择一个人。当用户按下Enter键时,它将刷新页面并复制通过第一个控件获取的任何信息。我试图从刷新页面中删除enter键的功能。此代码均适用于Chrome和IE7 / 8/9(不关心6)。我需要的只是返回false,因为它可以在我们支持的除Firefox之外的所有浏览器中工作。 .click()是一个奖励,可以将一些可用性添加回密钥(这样它将激活控件并选中或取消选中复选框等)。
这在Firefox 12中都不起作用。发生了点击(证明我希望它到达代码),但页面每次刷新一次。
focusNextInputfield()是来自类似问题的建议之一,并没有做我想做的任何事情。它可能已经完成了它的目的,但我无法分辨,因为页面刷新了。
我发现了自己的另一个类似问题的preventDefault()和stopPropagation(),它在FF中没有做任何事情。
我甚至尝试过回归真实。
$(document).keydown(function (event) {
//handles what happens when the user hits enter
if (document.activeElement.nodeName !== 'TEXTAREA') {
if (event.keyCode === 13 || event.which === 13) {
$(document.activeElement).click();
// $(document.activeElement).focusNextInputField();
event.preventDefault();
event.stopPropagation();
return false;
}
}
});
我只是在寻找任何有关FireFox 12没有任何影响的建议或新闻?而且我知道代码已经到达并且所有代码都正常运行而且没有错误,即使使用了所有多余的代码,它仍然可以在Chrome和IE 7/8/9中正常运行,如我所说。
通过早期的迭代,我尝试强制单击提交按钮,但仍然会刷新并进行验证,总体上是糟糕的用户体验。
答案 0 :(得分:2)
看起来你正在使用jQuery所以你只需要在表单提交事件中阻止默认。
$j("#form-id").submit(function(e) {
e.preventDefault();
...
});
或者:
$j("#form-id").submit(false);