@JonN

Почему конфликтуют jQuery-маска и JavaScript-перевод фокуса input полей формы?

Доброго дня всем.
Имеется форма ввода данных с полями вида:
<input type="text" id="phonecountry" name="phonecountry" value="<?=$article['phonecountry']?>" maxlength="2" size="2"/>
<input type="text" id="phonetown" name="phonetown" value="<?=$article['phonetown']?>" maxlength="3" size="3"/>
<input type="text" class="form-control" id="phonenumber" name="phonenumber" value="<?=$article['phonenumber']?>" maxlength="7" size="7"/>

К input-ам применяется маска c помощью jQuery Masked Input Plugin (подключается jQuery и файл плагина jquery.maskedinput.js). Маска задается следующими параметрами:
$(function(){
$("#phonecountry").mask("+7");
$("#phonetown").mask("(999)");
$("#phonenumber").mask("999-99-99");
});

Это все работает, понадобилось сделать переключение фокуса на следующее поле input при достижении maxlength в поле ввода.
Для этого есть такой скрипт:
function autofocus1(field, limit, next, evt) {
evt = (evt) ? evt : event;
var charCode = (evt.charCode) ? evt.charCode : ((evt.keyCode) ? 
evt.keyCode : ((evt.which) ? evt.which : 0));
if (charCode>31 && charCode<48 && field.value.length == limit) {
field.form.elements[next].focus();
}
}

Добавляю к полю input phonetown параметр
onkeyup="autofocus1(this, 3, 'phonenumber', event)"

получается input вида:
<input type="text" id="phonetown" name="phonetown" value="<?=$article['phonetown']?>" maxlength="3" size="3" onkeyup="autofocus1(this, 3, 'phonenumber', event)"/>
По нему после ввода 3 символов в phonetown должен идти перевод фокуса на input phonenumber.
Но в таком виде оба скрипта вместе не работают.
Однако, если отключить подключенный jQuery плагин маски, перевод фокуса начинает работать.
Как сделать чтобы эти два скрипта отрабатывали вместе?
Заранее спасибо :)
  • Вопрос задан
  • 591 просмотр
Пригласить эксперта
Ответы на вопрос 1
risentveber
@risentveber
fullstack web developer
Видимо причина в preventDefault в keypressEvent используй одно из событий keyup или keypress например (читать здесь).
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы