我有一个跨多个div的HTML表单。当用户在每个div中的第一个或最后一个元素上时,我需要知道用户何时按Tab键(因此我可以应用一些自定义选项卡功能)。对于div中的第一个元素,我正在寻找Tab + Shift;对于最后一个元素,我正在寻找Tab。元素可以是文本框,文本区,单选按钮,选择列表或复选框。
检测第一个和最后一个元素的最有效方法是什么?很高兴使用jQuery解决方案。
感谢。
答案 0 :(得分:2)
您可以使用:first-child
和:last-child
选择器查找表单元素。然后,您可以附加keydown
事件处理程序并分别检查SHIFT + TAB和TAB。
$('div input:first-child').keydown(function(event) {
if (event.which == 9 && event.shiftKey) { // Tab is keycode 9
// Do custom tab handling
}
});
$('div input:last-child').keydown(function(event) {
if (event.which == 9) {
// Do custom tab handling
}
});
答案 1 :(得分:0)
您可以使用第一个和最后一个子选择器:
var first = $("#form-name:first-child");
var last = $("#form-name:last-child");
答案 2 :(得分:0)
只要输入确实是DIV的第一个和最后一个孩子,下面的内容就可以了。否则你将需要更加棘手的选择。
编辑:我关于子订单的断言似乎不正确。这适用于大多数情况。 结束修改
如果您希望它特定于某些类型的输入,或任何被视为输入但实际上不是input
元素的内容,则选择器需要进行一些小调整。
<强>演示强>
http://jsfiddle.net/JAAulde/tHkdz/
<强>代码强>
$( '#myform' )
.find( 'div input:first-child, div input:last-child' )
.bind( 'keydown', function( e )
{
if( e.which === 9 )
{
//custom code here
e.preventDefault();
}
} );
答案 3 :(得分:0)
听起来你想要在第一个和最后一个元素上包含标签页。
$('#form').find('input, textarea, select').first();
$('#form').find('input, textarea, select').first();
.keydown()
.focus()
编辑:选择器逻辑错误