jquery如何捕获回车键并将事件更改为选项卡
我想要一个 jquery 解决方案,我必须接近,需要做什么?
$('html').bind('keypress', function(e)
{
if(e.keyCode == 13)
{
return e.keyCode = 9; //set event key to tab
}
});
我可以返回 false,它会阻止按下 Enter 键,我想我可以将 keyCode 更改为 9 以使其成为选项卡,但它似乎不起作用。我必须靠近,发生了什么事?
I want a jquery solution, I must be close, what needs to be done?
$('html').bind('keypress', function(e)
{
if(e.keyCode == 13)
{
return e.keyCode = 9; //set event key to tab
}
});
I can return false and it prevents the enter key from being pressed, I thought I could just change the keyCode to 9 to make it tab but it doesn't appear to work. I've got to be close, what's going on?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(20)
这是一个解决方案:
Here is a solution :
这很完美!
This works perfect!
为什么不做一些像这样简单的事情呢?
这样,除非您已经专注于“提交”的输入类型,否则您不会触发提交,并且它会将您带到您上次停下的地方。这也使得它适用于动态添加到页面的输入。
注意:对于任何可能有“on Blur”事件侦听器的人来说,blur() 位于 focus() 之前。该过程不需要工作。
Why not something simple like this?
This way, you don't trigger the submit unless you're focused on the input type of "submit" already, and it puts you right where you left off. This also makes it work for inputs which are dynamically added to the page.
Note: The blur() is in front of the focus() for anyone who might have any "on blur" event listeners. It is not necessary for the process to work.
PlusAsTab 还可配置为使用此演示中的 Enter 键< /a>.请参阅我的一些 旧答案 这个问题。
在您的情况下,将整个页面的回车键替换为选项卡功能(在选项中将回车键设置为选项卡之后)。
PlusAsTab is also configurable to use the enter key as in this demo. See some of my older answers to this question.
In your case, replacing the enter key with tab functionality for the entire page (after setting the enter key as tab in the options).
这是我一直在使用的:
注意 tabindex 并且不是特定于表单而是特定于整个页面。
注意 < code>live 已被 jQuery 废弃,现在你应该使用
on
Here is what I've been using:
Pays attention to the tabindex and is not specific to the form but to the whole page.
Note
live
has been obsoleted by jQuery, now you should be usingon
从 Ben 的插件构建,此版本处理选择,您可以将选项传递给allowSubmit。 IE。
$("#form").enterAsTab({ 'allowSubmit': true});
如果提交按钮正在处理该事件,这将允许 Enter 提交表单。Building from Ben's plugin this version handles select and you can pass an option to allowSubmit. ie.
$("#form").enterAsTab({ 'allowSubmit': true});
This will allow enter to submit the form if the submit button is handling the event.我将已接受的答案中的代码编写为 jQuery 插件,我发现它更有用。 (此外,它现在忽略隐藏、禁用和只读表单元素)。
这样我就可以执行 $('#form-id').enterAsTab(); ...我想我会发布它,因为还没有人将其作为 $ 插件发布,而且它们编写起来并不完全直观。
I wrote the code from the accepted answer as a jQuery plugin, which I find more useful. (also, it now ignores hidden, disabled, and readonly form elements).
This way I can do $('#form-id').enterAsTab(); ... Figured I'd post since no one has posted it as a $ plugin yet and they aren't entirely intuitive to write.
这最终对我来说是完美的。我正在使用 jqeasyui,它工作正常
This is at last what is working for me perfectly. I am using jqeasyui and it is working fine
包括所有类型的输入
Includes all types of inputs
这是我的解决方案,欢迎反馈..:)
This is my solution, feedback is welcome.. :)
我充分利用了上述内容,并添加了处理表单之外的任何输入的功能。此外,如果您到达最后一个输入,它也会正确地循环回到现在开始。如果只有一个输入,它会模糊然后重新聚焦单个输入以触发任何外部模糊/焦点处理程序。
I took the best of the above and added the ability to work with any input, outside of forms, etc. Also it properly loops back to start now if you reach the last input. And in the event of only one input it blurs then refocuses the single input to trigger any external blur/focus handlers.
这些解决方案不适用于我的数据网格。我希望他们会。我真的不需要 Tab 或 Enter 来移动到下一个输入、列、行或其他任何内容。我只需要 Enter 即可触发 .focusout 或 .change,我的数据网格就会更新数据库。所以我将“enter”类添加到相关的文本输入中,这对我来说很有效:
These solutions didn't work with my datagrid. I was hoping they would. I don't really need Tab or Enter to move to the next input, column, row or whatever. I just need Enter to trigger .focusout or .change and my datagrid updates the database. So I added the "enter" class to the relevant text inputs and this did the trick for me:
可见输入无法聚焦。
visible input cann't be focused.
我知道这个问题比上帝还要古老,但我从未见过如此优雅的答案。
这似乎可以用尽可能少的代码来完成工作。
I know this question is older than god, but I never saw an answer that was all that elegant.
that seems to get the job done in as few lines as humanly possible.
您应该过滤所有禁用和只读元素。
我认为这段代码不应该覆盖按钮
you should filter all disabled and readonly elements.
i think this code should not cover buttons
我的开发也有同样的需求,所以我对此进行了研究。在过去的两天里,我读了很多文章并尝试了很多解决方案,例如 jQuery.tabNext() 插件。
我在使用 IE11 时遇到了一些问题(所有 IE 版本都有这个错误)。当输入文本后跟非文本输入时,选择不会被清除。所以我根据 @Sarfraz 解决方案建议创建了自己的 tabNext() 方法。我也在思考它应该如何表现(仅在当前表单中圈出,或者可能通过完整文档)。我仍然没有关心 tabindex 属性,主要是因为我偶尔会使用它。但我不会忘记它。
为了我的贡献可以轻松地对每个人有用,我在这里创建了 jsfiddle 示例 https://jsfiddle.net/ mkrivan/hohx4nes/
我还在这里包含了示例的 JavaScript 部分:
我还留下了注释行,以便可以遵循我的想法。
I had the same requirement in my development so I did research on this. I have read many articles and tried many solutions during last two days like jQuery.tabNext() plugin.
I had some trouble with IE11 (all IE version has this bug). When an input text followed by non text input the selection was not cleared. So I have created my own tabNext() method based on @Sarfraz solution suggestion. I was also thinking on how it should behave (only circle in the current form or maybe through the full document). I still did not take care of the tabindex property mostly because I am using it occasionally. But I will not forget it.
In order to my contribution can be useful for everybody easily I have created jsfiddle example here https://jsfiddle.net/mkrivan/hohx4nes/
I include also the JavaScript part of the example here:
I left commented rows as well so my thinking can be followed.
我知道这已经很旧了,但我一直在寻找相同的答案,发现所选的解决方案不遵守 tabIndex。因此,我将其修改为对我有用的以下内容。请注意 maxTabNumber 是一个全局变量,它保存可选项输入字段的最大数量
I know this is rather old, but I was looking for the same answer and found that the chosen solution did not obey the tabIndex. I have hence modified it to the following which works for me. Please note that maxTabNumber is a global variable that holds the maximum number of tabbable input fields
这是我编写的一个 jQuery 插件,它将 Enter 键作为回调或 Tab 键(带有可选回调)处理:
Here's a jQuery plugin I wrote that handles enter key as a callback or as a tab key (with an optional callback):
我只需要接下来输入和选择,并且元素必须是可聚焦的。这个脚本对我来说效果更好:
也许它对某人有帮助。
I need to go next only to input and select, and element have to be focusable. This script works better for me:
Maybe it helps someone.
如果您使用 IE,这对我来说非常有用:
If you're using IE, this worked great for me: