Не переходит focus на следующий input

502
24 ноября 2016, 10:34

html:

              <form id = "mainForm">
             <div id = "div1">
             <input type="text" name="input-1" id = "input1" value="" size="10px" onkeyup="testJump(this);" maxlength="5" >         
             <input type="text" name="input-2" id = "input2" value="" size="10px" onkeyup="testJump(this);" maxlength="5" > 
             <input type="text" name="input-3" id = "input3" value="" size="10px" onkeyup="testJump(this);" maxlength="5" > 
             <input type="text" name="input-4" id = "input4" value="" size="10px" onkeyup="testJump(this);" maxlength="5" >
       <select id="listColor">
                         <option value="green">
                                Зеленый
                            </option>
                            <option value="red">
                                Красный
                            </option>
                            <option value="blue">
                                Синий
                            </option>
                            <option value="yellow">
                                Желтый    
                            </option>
        </select>
      </div>
      <div id  = "div2">
      <input type="reset" name="Очистка формы"></td>       
      <button id = "showButton" >Отобразить данные</button>
      <button id = "insertButton">Вставка текстового поля</button>
      </div>
</form>

функция для автоматического перехода фокуса:

                                 function testJump(x){
var ml = ~~x.getAttribute('maxlength');
if(ml && x.value.length >= ml){
    do{
        x = x.nextSibling;
    }
    while(x && !(/text/.test(x.type)));
    if(x && /text/.test(x.type)){
        x.focus();
    }
}
}

функция взята отсюда:Как перейти к следующему input'у при заполнении текущего?

Однако фокус не переходит

Answer 1

Исправил несколько ошибок..все работает. Может ты скрипт забываешь подключить?

<form id="mainForm">
  <div id="div1">
    <input type="text" name="input-1" id="input1" value="" size="10px" onkeyup="testJump(this);" maxlength="5">
    <input type="text" name="input-2" id="input2" value="" size="10px" onkeyup="testJump(this);" maxlength="5">
    <input type="text" name="input-3" id="input3" value="" size="10px" onkeyup="testJump(this);" maxlength="5">
    <input type="text" name="input-4" id="input4" value="" size="10px" onkeyup="testJump(this);" maxlength="5">
    <select id="listColor">
      <option value="green">Зеленый</option>
      <option value="red">Красный</option>
      <option value="blue">Синий</option>
      <option value="yellow">Желтый</option>
    </select>
  </div>
  <div id="div2">
    <input type="reset" name="Очистка формы">
    <button id="showButton">Отобразить данные</button>
    <button id="insertButton">Вставка текстового поля</button>
  </div>
</form>

Скрипт:

function testJump(x){
  var ml = x.getAttribute('maxlength');
  if(ml && x.value.length >= ml){
    do {
      x = x.nextSibling;
    }
    while(x && !(/text/.test(x.type)));
    if(x && /text/.test(x.type)){
      x.focus();
    }
  }
}
Answer 2

Скрипт полностью рабочий. Его нужно только подключить к html странице следующим образом: Скопируй следующею строку и вставь между тэгами и в своем html документе.

<script src = "ЗДЕСЬ ПИШИ ССЫЛКУ НА СВОЙ javascript ФАЙЛ СОДЕРЖАЩИЙ КОД" type="text/javascript"></script>

READ ALSO
Смысл использования removeEventListener

Смысл использования removeEventListener

Появился вопрос при чтении раздела документации js по addEventListener и removeEventListener

426
Передача данных в ajax

Передача данных в ajax

В общем задача такова: мне надо передать массив(с помощью ajax наверное) с контроллера на jsВот мой контроллер:

454
Ajax. return false\true

Ajax. return false\true

Подскажите пожалуйстаЕсть вот такой запрос

418