How to detect pressing Enter on keyboard using jQuery?
我想检测用户是否使用jquery按下了enter。
这怎么可能?它需要一个插件吗?
编辑:看来我需要使用
我想知道是否有人知道这个命令是否存在浏览器问题,比如有什么浏览器兼容性问题我应该知道?
jquery的关键是,您不必担心浏览器的差异。我非常肯定您可以安全地使用enter,它在所有浏览器中都是13。因此,考虑到这一点,您可以这样做:
1 2 3 4 5 | $(document).on('keypress',function(e) { if(e.which == 13) { alert('You pressed enter!'); } }); |
我写了一个小插件,以便更容易地绑定"on enter key pressed"事件:
1 2 3 4 5 6 7 8 9 10 | $.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); } }) }) } |
。
用途:
1 2 3 | $("#input").enterKey(function () { alert('Enter!'); }) |
我不能让@paolo bergantino发布的代码工作,但是当我把它改为
1 2 3 4 5 | $(document).keypress(function(e) { if(e.which == 13) { alert('You pressed enter!'); } }); |
号
链接到JS bin上的示例
我发现这更适合跨浏览器:
1 2 3 4 5 6 | $(document).keypress(function(event) { var keycode = event.keyCode || event.which; if(keycode == '13') { alert('You pressed a"enter" key in somewhere'); } }); |
您可以使用jquery"keydown"事件句柄来执行此操作。
1 2 3 4 | $("#start" ).on("keydown", function(event) { if(event.which == 13) alert("Entered!"); }); |
。
我花了些时间想出这个解决方案,希望它能帮助别人。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | $(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'); } }); }); |
。
有一个keypress()事件方法。Enter键的ASCII号是13,与使用的浏览器无关。
使用
1 2 3 4 5 | $(document).keypress(function(event) { if (event.key ==="Enter") { // Do something } }); |
号
或者没有jquery:
1 2 3 4 5 | document.addEventListener("keypress", function onEvent(event) { if (event.key ==="Enter") { // Do something better } }); |
号
Mozilla文档
支持的浏览器
上面对Andrea答案的一个小扩展使helper方法在您可能还希望捕获修改过的回车键(即ctrl-enter或shift-enter)时更有用。例如,此变量允许如下绑定:
1 | $('textarea').enterKey(function() {$(this).closest('form').submit(); }, 'ctrl') |
号
当用户按下ctrl enter并将焦点放在表单的文本区域时提交表单。
1 2 3 4 5 6 7 8 9 10 | $.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)
尝试此操作以检测按下的Enter键。
1 2 3 4 5 | $(document).on("keypress", function(e){ if(e.which == 13){ alert("You've pressed the enter key!"); } }); |
号
参见演示@detect enter key press on keyboard
在某些情况下,可能需要对页面的某个区域而不是页面的其他区域(如下面包含带有搜索字段的标题
我花了一点时间来弄清楚如何做到这一点,我在这里为社区发布了这个简单而完整的示例。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 | <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> Test Script <script src="/lib/js/jquery-1.7.1.min.js" type="text/javascript"> <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(); } }); </head> <body> <!-- Other HTML here --> <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> </body> </html> |
链接到jsFiddle Playground:
用按键法检测键盘上按回车键使用jquery?
1 2 3 4 5 6 7 | $('#someTextBox').keypress(function(event){ var keycode = (event.keyCode ? event.keyCode : event.which); if(keycode == '13'){ alert('You pressed a"enter" key in textbox'); } event.stopPropagation(); }); |
号
1 2 3 4 5 6 7 8 9 10 11 12 | <html> <head> jQuery keypress() Method To Detect Enter key press or not Example <script src="https://code.jquery.com/jquery-3.3.1.min.js"> </head> <body> Write something here & press enter <label>TextBox Area: </label> <input id="someTextBox" type="text" size="100" /> </body> </html> |
号
1 2 3 4 5 | $(document).keyup(function(e) { if(e.key === 'Enter') { //Do the stuff } }); |
我认为最简单的方法是使用香草javacript:
1 2 3 4 5 | document.onkeyup = function(event) { if (event.key === 13){ alert("enter was pressed"); } } |
号
检测用户是否按了Enter键的简单方法是使用键号Enter键号=13来检查设备中键的值。
1 2 3 4 5 6 7 8 9 10 11 12 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); }); |
。
按Enter键将得到结果13。使用键值,您可以调用函数或执行任何您想执行的操作。
1 2 3 4 5 6 | $(document).keypress(function(e) { if(e.which == 13) { console.log("User entered Enter key"); // the code you want to run } }); |
。
如果您希望在按下Enter键后以某个按钮为目标,则可以使用该代码
1 2 3 4 5 | $(document).bind('keypress', function(e){ if(e.which === 13) { // return $('#butonname').trigger('click'); } }); |
希望有帮助
1 2 3 4 5 6 7 8 9 10 | $(function(){ $('.modal-content').keypress(function(e){ debugger var id = this.children[2].children[0].id; if(e.which == 13) { e.preventDefault(); $("#"+id).click(); } }) }); |
号