我有一个文本输入和一个按钮(见下文)。我如何使用JavaScript触发按钮的点击事件时,进入键按下文本框内?

在我的当前页面上已经有一个不同的提交按钮,所以我不能简单地将该按钮设置为提交按钮。并且,我只想让Enter键单击这个特定的按钮,如果它是从这个文本框中按下,没有其他。

<input type="text" id="txtSearch" />
<input type="button" id="btnSearch" value="Search" onclick="doSomething();" />

当前回答

用jQuery实现:

$("#txtSearch").on("keyup", function (event) {
    if (event.keyCode==13) {
        $("#btnSearch").get(0).click();
    }
});

用正常的JavaScript实现:

document.getElementById("txtSearch").addEventListener("keyup", function (event) {
    if (event.keyCode==13) { 
        document.getElementById("#btnSearch").click();
    }
});

其他回答

在jQuery中,你可以使用event.which==13。如果你有一个表单,你可以使用$('#formid').submit()(将正确的事件监听器添加到该表单的提交中)。

$ (' # textfield ') .keyup(函数(事件){ 如果(event.which = = 13) { $(" #提交”).click (); } }); $(" #提交”).click(函数(e) { 如果($ (' # textfield ') .val () .trim () . length) { alert(“提交!”); }其他{ alert(“字段不能为空!”); } }); < script src = " https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js " > < /脚本> <标签= >“文本框” 输入文本:> < /标签 <input id="textfield" type="text"> <按钮id = "提交" > 提交 < /按钮>

onkeydown="javascript:if (event.which || event.keyCode){if ((event.which == 13) || (event.keyCode == 13)) {document.getElementById('btnSearch').click();}};"

这只是我从一个最近的项目…我在网上找到的,我不知道在普通的JavaScript中是否有更好的方法。

这是为所有YUI爱好者提供的解决方案:

Y.on('keydown', function() {
  if(event.keyCode == 13){
    Y.one("#id_of_button").simulate("click");
  }
}, '#id_of_textbox');

在这种特殊情况下,我确实使用YUI来触发已注入按钮功能的DOM对象有更好的结果——但这是另一个故事……

event.returnValue = false

在处理事件时或在事件处理程序调用的函数中使用它。

它至少在ie浏览器和Opera上运行。

在Angular2:

(keyup.enter)="doSomething()"

如果您不希望按钮中有一些视觉反馈,那么不引用按钮而是直接调用控制器是一个很好的设计。

另外,id也不需要——这是NG2分离视图和模型的另一种方式。