15

有没有一种好方法,在 javascript onfocus() 处理程序中,将焦点转移到选项卡顺序中的下一个项目,而无需手动输入应该是下一个项目的 ID?

我在 Django/jQuery 中构建了一个 HTML 日期选择器。这是一个行编辑,后跟一个弹出日历的日历图标。我希望能够从行编辑选项卡到下一个输入,跳过日历图标的链接。我的意思是它是一个通用的小部件,所以我不能硬编码下一个的 id 并调用 .focus()。我知道我可以在所有内容上设置 tabindex 属性,但这比我想要的更手动。此外,iirc 不会阻止它获得焦点,它只会将它放在标签顺序的末尾。

4

7 回答 7

27

为该控件设置 tabindex = "-1" ,浏览器将从选项卡中跳过该控件。

于 2009-09-28T21:41:04.000 回答
2

也许:

$("#your-calendar-icon").focus(function() {
  $(this).trigger("blur");
);
于 2009-01-05T01:33:04.107 回答
2

或者:

$("#your-calendar-icon").focus(function() {
    $(somethingElse).trigger("focus");
});
于 2009-01-05T02:30:55.970 回答
1

检查此资源:

于 2009-01-05T02:00:54.953 回答
0

正如@thetacom 所说,您可以只使用另一种类型的元素,即不接收焦点的元素。如果您仍想保留某些tab功能,可以尝试SkipOnTab

SkipOnTab : 一个 jQuery 插件,用于将选定的表单字段从向前的 tab 顺序中排除。

只需添加data-skip-on-tab="true"到您要跳过的日期选择器图标(或其他元素/容器)。您仍然可以单击以激活日期选择器或使用shift-tab并使用回车键返回。

请参阅简单演示商业案例演示

于 2012-02-12T15:36:27.037 回答
0

在日历图标周围使用 div 而不是链接。然后将您的日历事件附加到 div。默认情况下,div 不会是制表位。

于 2009-01-05T01:44:49.950 回答
0

如果它总是在日历之后输入,那为什么不呢:

$('#your-calendar-icon').focus( function() {
  $(this).next('input').focus();
} );

就个人而言,我会说如果它要成为一个插件,你应该将下一个元素设置为具有默认值的配置选项,并在文档中指定默认值。

于 2009-01-05T02:48:01.537 回答