Javascript jquery查找不带属性的下一个元素
我有一个大表单,我想通过按enter键而不是tab键来浏览它。我有一个简单的脚本,它工作得很好,直到我在混合中添加了一些禁用的字段。如何跳过具有disabled属性的字段 我尝试过使用循环,但我无法让它跳过两个禁用的字段并集中到下一个字段,因为它似乎在禁用的字段之前停留在字段上 否则,有没有办法将enter键代码13替换为tab键代码?我在这里尝试了一些解决方案,但似乎都不管用Javascript jquery查找不带属性的下一个元素,javascript,jquery,Javascript,Jquery,我有一个大表单,我想通过按enter键而不是tab键来浏览它。我有一个简单的脚本,它工作得很好,直到我在混合中添加了一些禁用的字段。如何跳过具有disabled属性的字段 我尝试过使用循环,但我无法让它跳过两个禁用的字段并集中到下一个字段,因为它似乎在禁用的字段之前停留在字段上 否则,有没有办法将enter键代码13替换为tab键代码?我在这里尝试了一些解决方案,但似乎都不管用 $('input').on('keydown', function (e) { if (e.keyCode =
$('input').on('keydown', function (e) {
if (e.keyCode == 13) {
e.preventDefault();
$('input')[$('input').index(this)+1].focus();
}
});
您只需过滤集合并删除禁用的输入,缓存选择器可以节省三次DOM查找 请注意,
:enabled
和。not([disabled])
之间稍有不同,前者选择布尔禁用属性严格等于false的元素,而后者选择没有禁用属性集的元素(无论其值如何)
您可以使用
$('input')。在('keydown',函数(e)上{
如果(e.keyCode==13){
e、 预防默认值();
var enabledInput=$('input')。不是('disabled');
enabledInput.eq(enabledInput.index(this)+1.focus();
}
});
使用?怎么办?不起作用。据我所知,next()
仅适用于下一个元素,当我需要跳过多个元素时
var inputs = $('input');
inputs.on('keydown', function (e) {
if (e.keyCode === 13) {
e.preventDefault();
var enabled = inputs.not('[disabled]');
enabled.eq( enabled.index(this) + 1 ).focus();
}
});
$('input').on('keydown', function (e) {
if (e.keyCode == 13) {
e.preventDefault();
$('input:enabled')[$('input:enabled').index(this)+1].focus();
}
});
<input />
<input />
<input disabled="disabled"/>
<input />
$('input').on('keydown', function (e) {
if (e.keyCode == 13) {
e.preventDefault();
var enabledInput = $('input').not('[disabled]');
enabledInput.eq( enabledInput.index(this) + 1 ).focus();
}
});