@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 плагин маски, перевод фокуса начинает работать.
Как сделать чтобы эти два скрипта отрабатывали вместе?
Заранее спасибо :)
  • Вопрос задан
  • 597 просмотров
Пригласить эксперта
Ответы на вопрос 1
risentveber
@risentveber
fullstack web developer
Видимо причина в preventDefault в keypressEvent используй одно из событий keyup или keypress например (читать здесь).
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
11 мая 2024, в 06:09
30000 руб./за проект
11 мая 2024, в 00:19
1000 руб./за проект
10 мая 2024, в 23:51
30000 руб./за проект