TabIndex в динамической форме (элементы отображаются в зависимости от регистра)

Я работал над более сложной формой, где поля отображаются в зависимости от некоторых условий значений, введенных в форму.

Тем не менее, когда форма введена через <Tab> ключ (<Tab> ключ-> введите значение-><Tab> ключ), он не переходит к вновь появившемуся полю, а к тому, которое было ранее видимым.

Ниже приведен упрощенный пример. Если вы напишите что-нибудь в поле с номером 1, будет инициировано событие изменения, и будет показан вход со значением 2, но не следующий, на котором следует сосредоточиться.

<head>
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
</head>
<form>
    <input id="input1" value="1" tabindex="1" onchange="$('#input2').show()">
    <input id="input2" value="2" tabindex="2" style="display: none;">
    <input id="input3" value="3" tabindex="3" onchange="$('#input4').show()">
    <input id="input4" value="4" tabindex="4" style="display: none;">
    <input id="input5" value="5" tabindex="5">
    <input id="input6" value="6" tabindex="6">
</form>

Из-за его сложности, я не хотел бы играть с прямым контролем над <Tab> ключ. Кроме того, я не могу использовать onchange="$('#input2').show();$('#input2').focus()" поскольку тот же код используется и в тех случаях, когда он не является ближайшим следующим элементом. Есть ли способы решить эту проблему?

Заранее спасибо за любые комментарии / предложения.

1 ответ

Решение

Нажмите здесь для рабочего решения на jsFiddle.

я использовал нажатие клавиш, чтобы сделать эту работу.

в этом примере вы можете перемещаться вперед и назад через текстовые поля 1, 3 и 5, а затем изменить значение текстового поля 1, которое показывает текстовое поле 2; Затем вы можете перейти к текстовым полям 2, 3 и 5 - и так далее.

Надеюсь, я правильно понял вашу задачу и это полезно. веселит.

<!DOCTYPE html>
<html>
<head>
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js" type="text/javascript"></script>

    <script type="text/javascript">
      $(document).ready(function() {
        $("input").live("keypress", function() {
          $(this).next().show()
        })
      })
    </script>

    <style type="text/css">
      .hidden {
        display:none;
      }
    </style>
</head>
<body>
<form>
    <input id="input1" value="1">
    <input id="input2" value="2" class="hidden">
    <input id="input3" value="3">
    <input id="input4" value="4" class="hidden">
    <input id="input5" value="5">
    <input id="input6" value="6" class="hidden">
</form>
</body>
</html>
Другие вопросы по тегам