Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/458.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript jquery查找不带属性的下一个元素_Javascript_Jquery - Fatal编程技术网

Javascript jquery查找不带属性的下一个元素

Javascript jquery查找不带属性的下一个元素,javascript,jquery,Javascript,Jquery,我有一个大表单,我想通过按enter键而不是tab键来浏览它。我有一个简单的脚本,它工作得很好,直到我在混合中添加了一些禁用的字段。如何跳过具有disabled属性的字段 我尝试过使用循环,但我无法让它跳过两个禁用的字段并集中到下一个字段,因为它似乎在禁用的字段之前停留在字段上 否则,有没有办法将enter键代码13替换为tab键代码?我在这里尝试了一些解决方案,但似乎都不管用 $('input').on('keydown', function (e) { if (e.keyCode =

我有一个大表单,我想通过按enter键而不是tab键来浏览它。我有一个简单的脚本,它工作得很好,直到我在混合中添加了一些禁用的字段。如何跳过具有disabled属性的字段

我尝试过使用循环,但我无法让它跳过两个禁用的字段并集中到下一个字段,因为它似乎在禁用的字段之前停留在字段上

否则,有没有办法将enter键代码13替换为tab键代码?我在这里尝试了一些解决方案,但似乎都不管用

$('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();        
    }
});