我有一个文本输入和一个按钮(见下文)。当在文本框中按下 Enter 键时,如何使用 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() { alert("按钮代码执行。"); }); 用户名:
密码:
或者在纯 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("按钮代码已执行。"); } 用户名:
密码:
然后只需将其编码!
<input type = "text"
id = "txtSearch"
onkeydown = "if (event.keyCode == 13)
document.getElementById('btnSearch').click()"
/>
<input type = "button"
id = "btnSearch"
value = "Search"
onclick = "doSomething();"
/>
想通了:
<input type="text" id="txtSearch" onkeypress="return searchKeyPress(event);" />
<input type="button" id="btnSearch" Value="Search" onclick="doSomething();" />
<script>
function searchKeyPress(e)
{
// look for window.event in case event isn't passed in
e = e || window.event;
if (e.keyCode == 13)
{
document.getElementById('btnSearch').click();
return false;
}
return true;
}
</script>
我已经开发了自定义 javascript 来通过添加类来实现这个功能
示例:<button type="button" class="ctrl-p">Custom Print</button>
在这里查看 Fiddle
-- 或 --
查看运行示例 https://stackoverflow.com/a/58010042/6631280
注意:在当前逻辑上,您需要按 Ctrl + Enter
我的可重复使用的 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();
}
}
这也可能有帮助,一个小的 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)" />
我知道这个问题已经解决了,但我刚刚发现了一些对其他人有帮助的东西。
不定期副业成功案例分享
keydown
而不是keyup
是更好的事件。此外,如果您使用的是 asp.net,则必须在最后使用return false
以阻止 asp.net 仍然拦截事件。keydown
的问题是按住 enter 会一遍又一遍地触发事件。如果您附加到keyup
事件,它只会在释放键后触发。click();
函数之前添加了event.preventDefault();
,而我的页面有一个表单,并且我已经用keypress
切换了keyup
,因为它是我唯一的工作处理程序,无论如何,谢谢你的整洁代码!