Я хотел бы вернуться к предыдущему текстовому полю, когда текущее текстовое поле пусто.

Я могу перейти к следующему текстовому полю, когда текущее текстовое поле заполнено, но я не могу вернуться, когда я удаляю символы (длина == 0) в текстовое поле.

Вот мои текстовые поля:

<input id="txt_1" type="number" maxlength="3" onKeyDown="if(event.KeyCode != 8){if(this.value.length == 3){window.setTimeout(function (){document.getElementById('txt_2').focus();},0);return false;}}">
<input id="txt_2" type="number" maxlength="3" onKeyDown="if(event.KeyCode != 8){if(this.value.length == 3){window.setTimeout(function (){document.getElementById('txt_3').focus();},0);return false;}}">
<input id="txt_3" type="number" maxlength="3" onKeyDown="if(event.KeyCode != 8){if(this.value.length == 3){return false;}}">

Я могу пойти (на заполнение), как:

txt_1 > txt_2 > txt_3

Я не могу вернуться (при удалении) как:

txt_3 > txt_2 > txt_1
1
Hallowen 27 Окт 2019 в 13:00

2 ответа

Лучший ответ

Чтобы получить значение текстового поля, когда вы попадете на событие, вы должны использовать событие keyup вместо keydown. Это должно сработать для вас, однако я предложил другое решение - не повторять код для каждого элемента:

$('.forward').on('keydown', function(e){
       if($(this).val().length === 3 && e.which != 8) e.preventDefault();  
});
$('.forward').on('keyup', function(e){

     if($(this).val().length === 3)
     { if($(this).data('next')) $($(this).data('next')).focus();}
     if($(this).val() === '')
     {if($(this).data('back')) $($(this).data('back')).focus();}
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<input id="txt_1" type="number" maxlength="3" data-next="#txt_2" class="forward" />
<input id="txt_2" type="number" maxlength="3" data-next="#txt_3" data-back="#txt_1" class="forward" />
<input id="txt_3" type="number" maxlength="3" data-back="#txt_2" class="forward" />
1
Ashkan Mobayen Khiabani 27 Окт 2019 в 11:03

Вы можете попробовать это

if( $("#txt_1").val() === ''){
        $("#txt_1").focus();
        }
0
tebbe93 27 Окт 2019 в 11:37
58578320