Javascript 检测用户何时按第一个或最后一个表单元素上的tab键(在div中)
我有一个跨几个div的HTML表单。我需要知道用户在每个div中的第一个或最后一个元素上按下tab键的时间(这样我就可以应用一些自定义的tab功能)。对于div中的第一个元素,我要查找Tab+Shift;对于最后一个元素,我只查找Tab。元素可以是文本框、文本区域、单选按钮、选择列表或复选框 检测第一个和最后一个元素最有效的方法是什么?很高兴使用jQuery解决方案Javascript 检测用户何时按第一个或最后一个表单元素上的tab键(在div中),javascript,jquery,html,forms,Javascript,Jquery,Html,Forms,我有一个跨几个div的HTML表单。我需要知道用户在每个div中的第一个或最后一个元素上按下tab键的时间(这样我就可以应用一些自定义的tab功能)。对于div中的第一个元素,我要查找Tab+Shift;对于最后一个元素,我只查找Tab。元素可以是文本框、文本区域、单选按钮、选择列表或复选框 检测第一个和最后一个元素最有效的方法是什么?很高兴使用jQuery解决方案 谢谢。您可以使用第一个和最后一个子选择器: var first = $("#form-name:first-child"); va
谢谢。您可以使用第一个和最后一个子选择器:
var first = $("#form-name:first-child");
var last = $("#form-name:last-child");
您可以使用
: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
}
});
只要输入确实是div的第一个子项和最后一个子项,下面的操作就会起作用。否则,您将需要在选择时变得更加棘手 编辑:我关于子订单的断言似乎不正确。这应该适用于大多数情况结束编辑 如果您希望它特定于某些类型的输入,或任何被视为输入但实际上不是
输入
元素的内容,则需要对选择器进行一些微调
演示
代码
$( '#myform' )
.find( 'div input:first-child, div input:last-child' )
.bind( 'keydown', function( e )
{
if( e.which === 9 )
{
//custom code here
e.preventDefault();
}
} );
听起来您希望在第一个和最后一个元素上换行
- 获取第一个:
$('#form')。查找('input,textarea,select')。第一个()代码>
- 获取最后一个:
$('#form')。查找('input,textarea,select')。首先()代码>
- 将keydown绑定到元素:
.keydown()
- 使用此选项确定按下了哪个键:
- 然后关注所需的元素:
.focus()
e、 g.:如果您所要做的只是将焦点向后/向前移动到正确的输入,为什么不使用
tabindex
属性而不是JS?这些都不起作用。它们将查找所有div中的所有输入,并仅返回总集合的第一个或最后一个。不是每个div的第一个和最后一个。那么您想对第一个和最后一个输入使用相同的事件处理程序吗?似乎您只希望在第一个输入上处理SHIFT+TAB,并让默认行为仅在TAB键上接管。