我有一个文本输入和一个按钮(见下文) . 当在文本框中按Enter键时,如何使用JavaScript trigger the button's click event ?
我当前页面上已经有一个不同的提交按钮,所以我不能简单地将按钮设置为提交按钮 . 并且,如果从这个文本框中按下该按钮,我只希望Enter键单击此特定按钮,没有别的 .
<input type="text" id="txtSearch" />
<input type="button" id="btnSearch" value="Search" onclick="doSomething();" />
25 回答
虽然,我很确定只要表单中只有一个字段和一个提交按钮,即使页面上有另一个表单,按Enter也应该提交表单 .
然后,您可以使用js捕获表单onsubmit,并执行您想要的任何验证或回调 .
对于jquery mobile我必须这样做
在处理事件时或在事件处理程序调用的函数中使用它 .
它至少适用于Internet Explorer和Opera .
然后只需编入代码即可!
这是我的两分钱 . 我正在开发一个适用于Windows 8的应用程序,并且当按下Enter按钮时希望该按钮注册一个单击事件 . 我在JS中这样做 . 我尝试了几个建议,但有问题 . 这很好用 .
你可以使用的一个基本技巧,我没有看到完全提到过 . 如果您想在Enter上执行ajax操作或其他工作,但又不想实际提交表单,则可以执行以下操作:
设置动作=“javascript:void(0);”这样就是防止默认行为的捷径 . 在这种情况下,无论您是按Enter键还是单击按钮,都会调用一个方法,并调用ajax来加载某些数据 .
在纯JavaScript中,
我注意到答案只在jQuery中给出,所以我想用普通的JavaScript给出一些东西 .
在 Angular2 :
如果你不想在按钮中有一些视觉反馈,那么不引用按钮而是直接调用控制器是一个很好的设计 .
此外,不需要id - 另一种在视图和模型之间分离的NG2方式 .
在这种情况下,您还需要将“输入”按钮从“发布”更改为服务器并执行Js脚本 .
使用keypress和event.key ===使用现代JS“Enter”!
Mozilla Docs
Supported Browsers
这只是我最近的一个项目所得到的......我在网上发现它,我不知道在普通的旧JavaScript中是否有更好的方法 .
没有人注意到html attibute“accesskey”,它已经有一段时间了 .
这是一种没有javascript方式的键盘快捷键的东西 .
The accesskey attributes shortcuts on MDN
不知不觉就像这样使用 . html属性本身就足够了,我们可以根据浏览器和操作系统更改占位符或其他指标 . 该脚本是一种未经测试的划痕方法,可以提供一个想法 . 您可能想要使用像bowser这样的浏览器库检测器
要添加一个解决@icedwater's issue with form submission的完全简单的JavaScript解决方案,这里有一个完整的解决方案
form
.小提琴:https://jsfiddle.net/rufwork/gm6h25th/1/
HTML
JavaScript
在jQuery中,您可以使用
event.which==13
. 如果您有一个form
,则可以使用$('#formid').submit()
(在提交所述表单时添加了正确的事件侦听器) .用jQuery做到这一点:
要用普通的JavaScript做到这一点:
在jQuery中,以下内容可行:
或者在纯JavaScript中,以下内容可行:
Try it:
这也可能有用,一个小的JavaScript函数,工作正常:
我知道这个问题已经解决了,但我发现了一些对别人有帮助的东西 .
由于还没有人使用
addEventListener
,这是我的版本 . 鉴于要素:我会使用以下内容:
这允许您在保持HTML清洁的同时单独更改事件类型和操作 .
想出这个:
这个 onchange 尝试很接近,但是对于浏览器然后向前(在Safari 4.0.5和Firefox 3.6.3上)行为不端,所以最终,我不推荐它 .
这是所有人的解决方案 YUI 恋人在那里:
在这个特殊情况下,我确实有更好的结果使用YUI来触发已经注入按钮功能的DOM对象 - 但这是另一个故事......
对于那些可能喜欢简洁和现代js方法的人 .
其中 input 是包含输入元素的变量 .
使按钮成为提交元素,因此它将是自动的 .
请注意,您需要一个包含输入字段的
<form>
元素才能使其工作(感谢Sergey Ilinsky) .重新定义标准行为不是一个好习惯,Enter键应始终调用表单上的提交按钮 .
要在每次按下回车键时触发搜索,请使用以下命令: