使用JavaScript在文本框中的Enter键上触发按钮单击

JavaScript

ItachiSam

2020-03-09

我有一个文本输入和一个按钮(请参阅下文)。在文本框中按下键时,如何使用JavaScript 触发按钮的click事件Enter

当前页面上已经有一个不同的“提交”按钮,因此我不能简单地将该按钮设为“提交”按钮。而且,如果Enter从该一个文本框中按下该按钮,我希望按键单击此特定按钮,没有其他选择。

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

第295篇《使用JavaScript在文本框中的Enter键上触发按钮单击》来自Winter(https://github.com/aiyld/aiyld.github.io)的站点

14个回答
小小猿 2020.03.09

一个小的JavaScript函数也可能会有所帮助,该函数可以正常工作:

<script type="text/javascript">
function blank(a) { if(a.value == a.defaultValue) a.value = ""; }

function unblank(a) { if(a.value == "") a.value = a.defaultValue; }
</script> 
<input type="text" value="email goes here" onfocus="blank(this)" onblur="unblank(this)" />

我知道这个问题已经解决,但是我发现了一些对其他人有帮助的东西。

Tony凯 2020.03.09

我已经开发了自定义javascript,只需添加类即可实现此功能

例: <button type="button" class="ctrl-p">Custom Print</button>

在这里查看小提琴
-或-
查看运行示例 https://stackoverflow.com/a/58010042/6631280

注意:在当前逻辑上,您需要按Ctrl+ Enter

Harry乐Harry 2020.03.09

要使用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();
    }
});
逆天理查德 2020.03.09
document.onkeypress = function (e) {
 e = e || window.event;
 var charCode = (typeof e.which == "number") ? e.which : e.keyCode;
 if (charCode == 13) {

        // Do something here
        printResult();
    }
};

这是我的两分钱。我正在为Windows 8开发一个应用程序,并希望在按下Enter按钮时该按钮注册一个点击事件。我在JS中执行此操作。我尝试了一些建议,但遇到了问题。这很好。

小哥Stafan 2020.03.09
event.returnValue = false

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

它至少可以在Internet Explorer和Opera中工作。

Harry乐Harry 2020.03.09

这次onchange尝试已经结束,但是对于浏览器来说,然后再向前(在Safari 4.0.5和Firefox 3.6.3上)表现不佳,因此最终我不推荐这样做。

<input type="text" id="txtSearch" onchange="doSomething();" />
<input type="button" id="btnSearch" value="Search" onclick="doSomething();" />
神乐十三 2020.03.09

虽然,我很确定只要表单中只有一个字段和一个提交按钮,即使页面上还有另一种表单,按回车键也应提交表单。

然后,您可以使用js捕获onsubmit表单,并执行所需的任何验证或回调。

达蒙小胖 2020.03.09

Angular2中

(keyup.enter)="doSomething()"

如果您不希望按钮中有任何视觉反馈,那么最好不要引用按钮而是直接调用控制器。

另外,不需要id-在视图和模型之间进行分离的另一种NG2方法。

LEY猿 2020.03.09

使用keypressevent.key === "Enter"拥有现代化的JS!

const textbox = document.getElementById("txtSearch");
textbox.addEventListener("keypress", function onEvent(event) {
    if (event.key === "Enter") {
        document.getElementById("btnSearch").click();
    }
});

Mozilla文件

支持的浏览器

Eva西里蛋蛋 2020.03.09

您可以使用的一个基本技巧,但我尚未完全提及。如果要执行ajax动作或Enter上的其他工作,但又不想实际提交表单,可以执行以下操作:

<form onsubmit="Search();" action="javascript:void(0);">
    <input type="text" id="searchCriteria" placeholder="Search Criteria"/>
    <input type="button" onclick="Search();" value="Search" id="searchBtn"/>
</form>

设置action =“ javascript:void(0);” 像这样,这是从本质上防止默认行为的捷径。在这种情况下,无论您是按Enter还是单击按钮都将调用一个方法,并进行ajax调用以加载一些数据。

Monkey洋 2020.03.09

由于没有人使用过addEventListener,因此这里是我的版本。给定元素:

<input type = "text" id = "txt" />
<input type = "button" id = "go" />

我将使用以下内容:

var go = document.getElementById("go");
var txt = document.getElementById("txt");

txt.addEventListener("keypress", function(event) {
    event.preventDefault();
    if (event.keyCode == 13)
        go.click();
});

这使您可以在保持HTML干净的同时分别更改事件类型和操作。

请注意,可能有必要确保此操作不在a之内,<form>因为当我将这些元素封装在其中时,按Enter即可提交表单并重新加载页面。让我眨了眨眼才发现。

附录:感谢@ruffin的评论,我添加了缺少的事件处理程序和,preventDefault以允许此代码(大概)也可以在表单内工作。(我将对此进行测试,这时将删除括号中的内容。)

神无Davaid 2020.03.09

将按钮设为Submit元素,因此它将是自动的。

<input type = "submit"
       id = "btnSearch"
       value = "Search"
       onclick = "return doSomething();"
/>

请注意,您需要一个<form>包含输入字段元素来完成这项工作(感谢Sergey Ilinsky)。

重新定义标准行为不是一个好习惯,Enter密钥应始终调用表单上的“提交”按钮。

TomTony 2020.03.09

在纯JavaScript中,

if (document.layers) {
  document.captureEvents(Event.KEYDOWN);
}

document.onkeydown = function (evt) {
  var keyCode = evt ? (evt.which ? evt.which : evt.keyCode) : event.keyCode;
  if (keyCode == 13) {
    // For Enter.
    // Your function here.
  }
  if (keyCode == 27) {
    // For Escape.
    // Your function here.
  } else {
    return true;
  }
};

我注意到答复仅在jQuery中给出,因此我想也以普通JavaScript给出一些内容。

LEYPro前端 2020.03.09

在jQuery中,以下将起作用:

$("#id_of_textbox").keyup(function(event) {
    if (event.keyCode === 13) {
        $("#id_of_button").click();
    }
});

$("#pw").keyup(function(event) {
    if (event.keyCode === 13) {
        $("#myButton").click();
    }
});

$("#myButton").click(function() {
  alert("Button code executed.");
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

Username:<input id="username" type="text"><br>
Password:&nbsp;<input id="pw" type="password"><br>
<button id="myButton">Submit</button>

或在纯JavaScript中,以下方法将起作用:

document.getElementById("id_of_textbox")
    .addEventListener("keyup", function(event) {
    event.preventDefault();
    if (event.keyCode === 13) {
        document.getElementById("id_of_button").click();
    }
});

document.getElementById("pw")
    .addEventListener("keyup", function(event) {
    event.preventDefault();
    if (event.keyCode === 13) {
        document.getElementById("myButton").click();
    }
});

function buttonCode()
{
  alert("Button code executed.");
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

Username:<input id="username" type="text"><br>
Password:&nbsp;<input id="pw" type="password"><br>
<button id="myButton" onclick="buttonCode()">Submit</button>

问题类别

JavaScript Ckeditor Python Webpack TypeScript Vue.js React.js ExpressJS KoaJS CSS Node.js HTML Django 单元测试 PHP Asp.net jQuery Bootstrap IOS Android