获取具有值的系列中的最后一个输入字段的索引

时间:2013-11-17 08:31:02

标签: javascript jquery

我可以给出的最简短的解释:

我连续有5(0到4)个输入字段。我想找到一个非空的最远的那个。

例如:

[      ] [      ] [      ] [      ] [ xyz   ]

代码应返回4,因为最右边的输入框不是空白。

又一个例子:

[ 123   ] [      ] [ abc   ] [      ] [      ]

代码应该返回2,因为“abc”是最右边的,输入字段中包含数据。

4 个答案:

答案 0 :(得分:3)

查看我的working Fiddle

守则:

<input name="a" type="text" >
<input name="b" type="text" >
    <input name="c" type="text" >
        <input name="d" type="text" >
            <button>LAST ONE</button>
<script>

$(document).ready(function(){
function func(){
alert($("input").filter(function() {
    return this.value.length !== 0;
}).last().index());
}
$("button").click(function(){
    func();
});
});
</script>

答案 1 :(得分:0)

试试这个:

var idx;
$('input'/*or whatever the correct selector is*/).each(function(i) {
    if($(this).val()) {
        idx = i;
    }
});
console.log(idx);

答案 2 :(得分:0)

尝试一下,

alert($('input:not(:empty)')。last()。index());

alert($("input[value!='']").last().index());

DEMO updated

或试试这个,

var xTest = $("input").filter(function(){
    return $(this).val() != '';   
}).last();


alert(xTest.index());

DEMO

答案 3 :(得分:0)

从选择结束开始并返回第一个有值的索引怎么样?在我看来,需要的迭代次数越少,性能越好:

function returnIndex($items) {
    for (var i=$items.length-1; i>0; i--) {
        var $thisItem = ;
        if ($items.eq(i).val()) {
            return i;
        }
    }
    return $items.eq(0).val() ? 0 : false;
}

console.log(returnIndex($('input'));