jQuery.on('keydown') 当键为 "enter" 时被截获 (?) 并且不起作用
jQuery.on('keydown') when key is "enter" is being intercepted (?) and won't work
我正在修改大量现有应用程序。在此应用程序中,页面顶部有一个搜索栏。我需要记录用户在搜索栏中按下 "Enter" 的时间,以便我可以触发一些逻辑。
看起来很简单。我可以只使用 jQuery keydown
甚至 keypress
事件来记录按下的键,然后如果键值匹配 13 for "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);
时,每个键的值都会弹出,但是当我尝试 "enter" 它只是提交表单并加载一个新页面而不会触发警报。
我的问题: 在不知道关于搜索框的现有代码的情况下(我几乎没有访问权限)有什么办法可以得到这个 keydown
事件触发?为什么会失败?
注意:我必须用jQuery.on()这种格式来处理事件
您必须阻止表单的正常行为。在您的逻辑中使用:e.preventDefault()
以防止提交表单。另外,请考虑改用事件 keyUp
。
我没有弄清楚如何绕过其他事件进程。但我确实找到了阻止我的密钥被识别的原因:
在文件 Site.js
中有一些 JavaScript:
$('#SearchTerm').keydown(function (event)
{
return handleKey(event);
});
$('#SearchTerm').keyup(function (event)
{
// Some stuff here...
return false;
}
此文件包含在 之前 我拥有的 JavaScript 文件。因为它是第一个并且有自己的 keydown
/keyup
事件,所以在按键有机会进入我自己的脚本之前,它正在执行它们并做自己的 e.preventDefault()
。
我正在修改大量现有应用程序。在此应用程序中,页面顶部有一个搜索栏。我需要记录用户在搜索栏中按下 "Enter" 的时间,以便我可以触发一些逻辑。
看起来很简单。我可以只使用 jQuery keydown
甚至 keypress
事件来记录按下的键,然后如果键值匹配 13 for "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);
时,每个键的值都会弹出,但是当我尝试 "enter" 它只是提交表单并加载一个新页面而不会触发警报。
我的问题: 在不知道关于搜索框的现有代码的情况下(我几乎没有访问权限)有什么办法可以得到这个 keydown
事件触发?为什么会失败?
注意:我必须用jQuery.on()这种格式来处理事件
您必须阻止表单的正常行为。在您的逻辑中使用:e.preventDefault()
以防止提交表单。另外,请考虑改用事件 keyUp
。
我没有弄清楚如何绕过其他事件进程。但我确实找到了阻止我的密钥被识别的原因:
在文件 Site.js
中有一些 JavaScript:
$('#SearchTerm').keydown(function (event)
{
return handleKey(event);
});
$('#SearchTerm').keyup(function (event)
{
// Some stuff here...
return false;
}
此文件包含在 之前 我拥有的 JavaScript 文件。因为它是第一个并且有自己的 keydown
/keyup
事件,所以在按键有机会进入我自己的脚本之前,它正在执行它们并做自己的 e.preventDefault()
。