2011-12-12 50 views
15

我有以下的html:選擇next()的輸入

<div> 
    <input type="text" maxlength="2" class="day-spin-month"></input> 
    <span>/</span> 
    <input type="text" maxlength="2" class="day-spin-day"></input> 
    <span>/</span> 
    <input type="text" maxlength="4" class="day-spin-year"></input> 
</div> 

我試圖將焦點更改到下一個輸入。我有以下兩種方式。

$('.day-spin-month').on('keyup', function() { 
    if (this.value.length >= 2) { 
     $(this).next().next().focus(); 
    } 
}); 
$('.day-spin-day').on('keyup', function() { 
    if (this.value.length >= 2) { 
     $(this).next().next().focus(); 
    } 
}); 

小提琴:http://jsfiddle.net/dan_vitch/JbQaN/1/

$('.day-spin-month').on('keyup', function() { 
    if (this.value.length >= 2) { 
     var test=$(this).next() 
     var test2= $(test).next('input'); 
     test2.focus(); 
    } 
}); 
$('.day-spin-day').on('keyup', function() { 
    if (this.value.length >= 2) { 
     var test=$(this).next() 
     var test2= $(test).next('input'); 
     test2.focus(); 
    } 
}); 

小提琴:http://jsfiddle.net/dan_vitch/JbQaN/2/

但它不以這種方式工作:

$('.day-spin-month').on('keyup', function() { 
    if (this.value.length >= 2) { 
     $(this).next('input').focus(); 
    } 
}); 
$('.day-spin-day').on('keyup', function() { 
    if (this.value.length >= 2) { 
     $(this).next('input').focus(); 
    } 
}); 

小提琴:http://jsfiddle.net/dan_vitch/rJwyE/2/

我想使用不工作的方式。我不確定它的選擇器是否不正確,或者我理解下一步的方法()

+0

http://stackoverflow.com/questions/290535/best-way-to-find-next-form-input-element-在-的jQuery –

回答

46

.next()僅查看DOM中的下一個同級元素。 IE瀏覽器。

$('.day-spin-month').next('input'); 

因爲下一個兄弟是跨度而不是輸入,所以不會匹配任何東西。

nextAll()着眼於所有未來的兄弟姐妹,所以你想:

$(this).nextAll('input').first().focus();