我想检测用户是否使用jQuery按 Enter .
Enter
这怎么可能?它需要一个插件吗?
编辑:看起来我需要使用keypress()方法 .
我想知道是否有人知道该命令是否存在浏览器问题 - 比如我是否应该了解任何浏览器兼容性问题?
我认为最简单的方法是使用vanilla javacript:
document.onkeyup = function(event) { if (event.key === 13){ alert("enter was pressed"); } }
您可以使用jquery'keydown'事件句柄来完成此操作
$( "#start" ).on( "keydown", function(event) { if(event.which == 13) alert("Entered!"); });
尝试此操作以检测按下的Enter键 .
$(document).on("keypress", function(e){ if(e.which == 13){ alert("You've pressed the enter key!"); } });
见demo @ detect enter key press on keyboard
有一个keypress()事件方法 . Enter键的ascii编号为13,不依赖于使用的浏览器 .
jQuery的重点在于您不必担心浏览器差异 . 我很确定你可以放心地在所有浏览器中输入13 . 所以考虑到这一点,你可以这样做:
$(document).keypress(function(e) { if(e.which == 13) { alert('You pressed enter!'); } });
我无法获得@Paolo Bergantino发布的代码,但是当我将其更改为 $(document) 和 e.which 而不是 e.keyCode 时,我发现它无故障地工作 .
$(document)
e.which
e.keyCode
Link to example on JS Bin
我发现这更兼容跨浏览器:
$(document).keypress(function(event) { var keycode = event.keyCode || event.which; if(keycode == '13') { alert('You pressed a "enter" key in somewhere'); } });
Andrea上面的答案的一个小扩展使得辅助方法更有用,当你可能还想捕获修改的输入按下时(即ctrl-enter或shift-enter) . 例如,此变体允许绑定,如:
$('textarea').enterKey(function() {$(this).closest('form').submit(); }, 'ctrl')
当用户按下ctrl-enter时,提交一个表单,焦点在该表单的textarea上 .
$.fn.enterKey = function (fnc, mod) { return this.each(function () { $(this).keypress(function (ev) { var keycode = (ev.keyCode ? ev.keyCode : ev.which); if ((keycode == '13' || keycode == '10') && (!mod || ev[mod + 'Key'])) { fnc.call(this, ev); } }) }) }
(另见Ctrl+Enter jQuery in TEXTAREA)
检测用户是否按下回车的简单方法是使用密钥编号,输入密钥编号= 13,以检查设备中密钥的值
$("input").keypress(function (e) { if (e.which == 32 || (65 <= e.which && e.which <= 65 + 25) || (97 <= e.which && e.which <= 97 + 25)) { var c = String.fromCharCode(e.which); $("p").append($("<span/>")) .children(":last") .append(document.createTextNode(c)); } else if (e.which == 8) { // backspace in IE only be on keydown $("p").children(":last").remove(); } $("div").text(e.which); });
按回车键,结果为13 . 使用键值可以调用函数或执行任何操作
$(document).keypress(function(e) { if(e.which == 13) { console.log("User entered Enter key"); // the code you want to run } });
如果您想在按下回车键时按下按钮,则可以使用该代码
$(document).bind('keypress', function(e){ if(e.which === 13) { // return $('#butonname').trigger('click'); } });
希望它有所帮助
我花了一些时间来提出这个解决方案,我希望它可以帮助某人 .
$(document).ready(function(){ $('#loginforms').keypress(function(e) { if (e.which == 13) { //e.preventDefault(); alert('login pressed'); } }); $('#signupforms').keypress(function(e) { if (e.which == 13) { //e.preventDefault(); alert('register'); } }); });
$(document).keypress(function(event) { if (event.key === "Enter") { // Do something } });
或者没有jQuery:
document.addEventListener("keypress", function onEvent(event) { if (event.key === "Enter") { // Do something better } });
Mozilla Docs
Supported Browsers
在某些情况下,您可能需要禁止页面的某个区域的ENTER键,而不是页面的其他区域,如下面包含带有SEARCH字段的 header <div> 的页面 .
<div>
我花了一些时间来弄清楚如何做到这一点,我在这里为社区发布这个简单而完整的例子 .
<!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title>Test Script</title> <script src="/lib/js/jquery-1.7.1.min.js" type="text/javascript"></script> <script type="text/javascript"> $('.container .content input').keypress(function (event) { if (event.keyCode == 10 || event.keyCode == 13) { alert('Form Submission needs to occur using the Submit button.'); event.preventDefault(); } }); </script> </head> <body> <div class="container"> <div class="header"> <div class="FileSearch"> <!-- Other HTML here --> </div> </div> <div class="content"> <form id="testInput" action="#" method="post"> <input type="text" name="text1" /> <input type="text" name="text2" /> <input type="text" name="text3" /> <input type="submit" name="Submit" value="Submit" /> </form> </div> </div> </body> </html>
Link to JSFiddle Playground: [Submit] 按钮不执行任何操作,但是从其中一个文本框控件中按ENTER将不会提交表单 .
[Submit]
我写了一个小插件,以便更容易绑定“按下输入键”一个事件:
$.fn.enterKey = function (fnc) { return this.each(function () { $(this).keypress(function (ev) { var keycode = (ev.keyCode ? ev.keyCode : ev.which); if (keycode == '13') { fnc.call(this, ev); } }) }) }
用法:
$("#input").enterKey(function () { alert('Enter!'); })
13 回答
我认为最简单的方法是使用vanilla javacript:
您可以使用jquery'keydown'事件句柄来完成此操作
尝试此操作以检测按下的Enter键 .
见demo @ detect enter key press on keyboard
有一个keypress()事件方法 . Enter键的ascii编号为13,不依赖于使用的浏览器 .
jQuery的重点在于您不必担心浏览器差异 . 我很确定你可以放心地在所有浏览器中输入13 . 所以考虑到这一点,你可以这样做:
我无法获得@Paolo Bergantino发布的代码,但是当我将其更改为
$(document)
和e.which
而不是e.keyCode
时,我发现它无故障地工作 .Link to example on JS Bin
我发现这更兼容跨浏览器:
Andrea上面的答案的一个小扩展使得辅助方法更有用,当你可能还想捕获修改的输入按下时(即ctrl-enter或shift-enter) . 例如,此变体允许绑定,如:
当用户按下ctrl-enter时,提交一个表单,焦点在该表单的textarea上 .
(另见Ctrl+Enter jQuery in TEXTAREA)
检测用户是否按下回车的简单方法是使用密钥编号,输入密钥编号= 13,以检查设备中密钥的值
按回车键,结果为13 . 使用键值可以调用函数或执行任何操作
如果您想在按下回车键时按下按钮,则可以使用该代码
希望它有所帮助
我花了一些时间来提出这个解决方案,我希望它可以帮助某人 .
使用event.key和现代JS!
或者没有jQuery:
Mozilla Docs
Supported Browsers
在某些情况下,您可能需要禁止页面的某个区域的ENTER键,而不是页面的其他区域,如下面包含带有SEARCH字段的 header
<div>
的页面 .我花了一些时间来弄清楚如何做到这一点,我在这里为社区发布这个简单而完整的例子 .
Link to JSFiddle Playground:
[Submit]
按钮不执行任何操作,但是从其中一个文本框控件中按ENTER将不会提交表单 .我写了一个小插件,以便更容易绑定“按下输入键”一个事件:
用法: