当使用Tab键导航时,Safari默认只访问表单元素。在使用自定义表单元素(例如jQuery UI Selectmenu)时,浏览表单字段时这些元素不会被忽略。如何在不改变默认设置的情况下使用Tab键在导航中包含自定义表单元素?如何在Safari中启用自定义表单元素的标签导航
1
A
回答
1
有jQuery的Selectmenu前右一input
元素,并添加事件处理它,因此一旦它获得焦点,它设置焦点到jQuery的Selectmenu。然后用这个CSS来隐藏您添加的输入框:position: absolute; top: -9999px; left: -9999px;
$('input.hiddenInput').focus(function(){
var cameFrom = $('#myForm').data('lastIn');
//check whether it came from the jQuery select menu
if(cameFrom != 'jquery-ui-element'){
$('jquery-ui-element').focus();
} else {
//focus previous sibling
var inp = $('input');
var index = inp.index(this);
var prev = inp[index-1];
prev.focus();
}
});
编辑:为了防止后Shift + Tab再次被聚焦你可以做这样的事情。
$('#myForm input').focusout(function() {
$('#myForm').data('lastIn', $(this).attr('name'));
});
0
所以这是我结束了解决方案:
select{
display: block !important;
left: -9999;
position: absolute !important;
}
我你机顶盒:-9999,页面将滚动到当元素获得焦点的顶部,所以我跳过的。我重用了selectmenu插件应用于的原始选择元素。重要的语句用于覆盖由插件应用的元素样式。
selectmenu插件会自动将焦点设置到a元素,以便在焦点选择项目时将焦点放在自定义下拉菜单上不需要javascript。但是,这使得向后缩进(带有移位)成为不可能,因为这会将焦点从自定义元素更改为原始元素,该元素将焦点设置回自定义元素。
我解决这个问题是这样的:
$('.ui-selectmenu').on('keydown', function(e){
if(e.shiftKey && e.keyKode === 9){
var all = $(':input'),
el = $(this).parent().prev('select'),
i = all.index(el);
all.eq(i).focus();
});
在这里,我所有的输入存储在一个变量,发现我的选择元素,并将焦点设置到前一个元素。
相关问题
- 1. VBA废料,如何获取元素在标签中导航?
- 2. Rails中的自定义表单元素
- 3. 在SilverStripe中自定义导航菜单
- 4. Xamarin表单自定义导航转换
- 5. 使用jQuery自定义表单元素
- 6. Liferay中的自定义导航菜单?
- 7. 自定义单元格标签
- 8. 如何隐藏我的自定义导航控制器中的标签栏?
- 9. ColdFusion的使用自定义标签中自定义标签
- 10. 使用左右对齐元素制作自定义导航栏
- 11. 如何跳过TAB导航中的表单元素?
- 12. 如何在Orchard中创建自定义导航菜单CMS
- 13. 如何关注safari中特定的非表单元素?
- 14. 表单标签语义html5以外的表单元素?
- 15. 在自定义单元格中获取标签的值
- 16. DevExtreme Angular2自定义标签表单
- 17. 如何与自定义表单使用黄瓜标签
- 18. LWUIT,如何为表单标题创建自定义标签
- 19. 自定义表单元素样式
- 20. 自定义表单元素脚本
- 21. 如何使用CSS 3自定义“选择”HTML表单元素?
- 22. Zend:我如何使用setDecorators()创建自定义表单元素?
- 23. 如何将导入的样式表应用于自定义元素的模板标签内容?
- 24. 标题元素嵌入导航元素
- 25. 自定义导航
- 26. iPhone:如何dealloc自定义单元格标签
- 27. Android:如何自定义启动器图标下的标签
- 28. 导入自定义元素在javascript
- 29. 如何自定义导航菜单和导航栏在甲骨文apex5.1
- 30. WPF菜单标签导航
我喜欢它:)但是,由于selectmenu之前的元素是select元素,它会将焦点反弹回selectmennu,所以它会打断shift-tabbing。我正在研究解决方案。 – 2012-03-02 09:21:06
@Jørgen你现在可以检查。我已经用解决方案编辑了这篇文章。 – blackpla9ue 2012-03-02 10:21:55
谢谢,我对这个解决方案并没有很满意,但是你让我走了,所以我接受:) – 2012-03-02 12:26:34