我正在修改一个重要的现有应用程序。在此应用程序中,页面顶部有一个搜索栏。我需要记录用户在搜索栏中按“Enter”的时间,以便我可以触发一些逻辑。
看起来很简单。我可以使用jQuery keydown
甚至keypress
事件来记录按下的键,然后如果键值匹配 13 表示“Enter”,我可以继续。
<form action="https://www.google.com" method="get" target="_blank">
<input id="search-field"/>
</form>
<script>
$(document).on('keydown', "#search-field", function (e) {
if (e.which == 13)
{
//"some logic"
}
});
</script>
这会捕获每个按键 EXCEPT “enter”!当我在JavaScript中创建alert(e.which);
时,会弹出每个键的值,但是当我尝试“输入”时,它只需提交表单并加载新页面而不会触发警报。
我的问题:在不知道有关搜索框的现有代码的情况下(我几乎没有访问权限)有什么方法可以让我以某种方式获取此keydown
事件?为什么会失败?
注意:我必须使用此格式的jQuery.on()来处理事件
答案 0 :(得分:1)
您必须阻止表单的正常行为。在您的逻辑中使用:e.preventDefault()
来阻止提交表单。另外,请考虑使用事件keyUp
。
答案 1 :(得分:0)
我没弄清楚如何绕过其他事件过程。但我确实找到了阻止我的密钥被识别的原因:
在文件Site.js
中有一些JavaScript:
$('#SearchTerm').keydown(function (event)
{
return handleKey(event);
});
$('#SearchTerm').keyup(function (event)
{
// Some stuff here...
return false;
}
此文件包含之前我拥有的JavaScript文件。由于它是第一个并且有自己的keydown
/ keyup
事件,因此在按键有机会进入我自己的脚本之前,它正在执行它们并执行自己的e.preventDefault()
。