javascript - 如何捕获回车键按下?

标签 javascript textbox keypress dom-events onkeypress

<分区>

在我的 HTML 页面中,我有一个文本框供用户输入关键字进行搜索。当他们单击搜索按钮时,JavaScript 函数将生成一个 URL 并在新窗口中运行。

当用户用鼠标单击搜索按钮时,JavaScript 函数可以正常工作,但当用户按 ENTER 键时,没有任何响应。

function searching(){
    var keywordsStr = document.getElementById('keywords').value;
    var cmd ="http://XXX/advancedsearch_result.asp?language=ENG&+"+ encodeURI(keywordsStr) + "&x=11&y=4";
    window.location = cmd;
}
<form name="form1" method="get">
    <input name="keywords" type="text" id="keywords" size="50" >
    <input type="submit" name="btn_search" id="btn_search" value="Search" 
        onClick="javascript:searching(); return false;" onKeyPress="javascript:searching(); return false;">
    <input type="reset" name="btn_reset" id="btn_reset" value="Reset">
</form>

最佳答案

表单方法

正如 scoota269 所说,您应该改用 onSubmit,因为在文本框上按 enter 很可能会触发表单提交(如果在表单内)

<form action="#" onsubmit="handle">
    <input type="text" name="txt" />
</form>

<script>
    function handle(e){
        e.preventDefault(); // Otherwise the form will be submitted

        alert("FORM WAS SUBMITTED");
    }
</script>

文本框方法

如果你想在输入字段上有一个事件,那么你需要确保你的 handle() 将返回 false,否则表单将被提交。

<form action="#">
    <input type="text" name="txt" onkeypress="handle(event)" />
</form>

<script>
    function handle(e){
        if(e.keyCode === 13){
            e.preventDefault(); // Ensure it is only this code that runs

            alert("Enter was pressed was presses");
        }
    }
</script>

关于javascript - 如何捕获回车键按下?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13987300/

相关文章:

javascript - ajax加载的Html页面无法正常显示

c# - 如何将文本框条目放入 while 循环? C#

javascript - 是否在 JavaScript 中按住了 shiftkey

javascript - 如何仅禁用/删除输入字段上的第一个空格?

jquery - 检测在 jQuery 按键中按下了什么键

javascript - nodejs 请求 promise url 位置未显示在 header 中

javascript - 如何在木瓜中管理缩放和长度 handle

javascript - 使用 .data() 的 jquery 插件对象配置

javascript - 使用JS检测文本框何时有值和单选按钮列表何时有选定索引

c# - 在单击按钮完成另一个线程后运行一个线程