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

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

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

当前回答

在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() { 警报(“按钮代码已执行。 }); <script src=“https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js”></script> 用户名:<输入 id=“用户名” 类型=“文本”><br> 密码:&nbsp;<输入 id=“pw” 类型=“密码”><br> <按钮 id=“我的按钮”>提交</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(); } }); 功能按钮代码() { 警报(“按钮代码已执行。 } <script src=“https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js”></script> 用户名:<输入 id=“用户名” 类型=“文本”><br> 密码:&nbsp;<输入 id=“pw” 类型=“密码”><br> <button id=“myButton” onclick=“buttonCode()”>提交</button>

其他回答

没有人注意到html属性“accesskey”已经有一段时间了。

这是一个没有javascript的方式来键盘快捷键的东西。

MDN上的accesskey属性快捷方式

故意这样使用的html属性本身就足够了,但是我们可以根据浏览器和操作系统改变占位符或其他指示符。该脚本是一个未经测试的草稿方法,以提供一个想法。您可能想要使用一个浏览器库检测器,比如小浏览器器

让客户知道。 linux =客户。indexOf(linux) > -1, isWin =客户。索引(“windows”> -1, “苹果”> -1, isFirefox =客户索引= -1, 网络工具=客户,索引(“网络工具”)> -1, (歌剧)> -1, 输入=文档。getElementById(“guest输入”); 如果(isFirefox) { 输入。setAttribute(“placeholder”、“ALT + SHIFT + Z”); 否则如果 输入。setAttribute (placeholder”、“ALT + Z”); 否则如果(isMac) 输入。setAttribute(“placeholder”、“CTRL + ALT + Z”); 否则 输入。setAttribute(“placeholder”、“SHIFT +逃亡- > Z”); 否则我就得操作… <输入类型=“文本”id=“guest输入”“accesskey”placeholder=“Acces快捷方式:”></输入>

这个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();" />

在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() { 警报(“按钮代码已执行。 }); <script src=“https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js”></script> 用户名:<输入 id=“用户名” 类型=“文本”><br> 密码:&nbsp;<输入 id=“pw” 类型=“密码”><br> <按钮 id=“我的按钮”>提交</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(); } }); 功能按钮代码() { 警报(“按钮代码已执行。 } <script src=“https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js”></script> 用户名:<输入 id=“用户名” 类型=“文本”><br> 密码:&nbsp;<输入 id=“pw” 类型=“密码”><br> <button id=“myButton” onclick=“buttonCode()”>提交</button>

我的可重用Vanilla JS解决方案。因此,您可以根据激活的元素/文本框来更改点击哪个按钮。

 <input type="text" id="message" onkeypress="enterKeyHandler(event,'sendmessage')" />
 <input type="button" id="sendmessage" value="Send"/>

function enterKeyHandler(e,button) {
    e = e || window.event;
    if (e.key == 'Enter') {
        document.getElementById(button).click();
    }
}

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

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

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