.next()
относится к непосредственно смежному (следующему) элементу, который не соответствует вашим входам.
Вместо этого попробуйте:
if($(this).val().match(/^\d{1}$/)){
$(this).closest("li").next("li").find("input").focus();
}
.closest("li")
перемещается вверх, пока не найдет <li>
. Затем мы получаем следующее <li>
с .next()
. Наконец, мы можем найти это <li>
для input
, используя .find("input")