Пытаюсь сделать свое поле набора номера телефона. Вроде, все правильно, но когда я манипулирую со строкой. Её значение почему-то не изменяется. В чём проблема? Может из-за локальной области видимости? Не знаю.
var
phone = "+7(___)___-__-__",
currentID = 3,
input = jQuery('input[name="feedback__phone"]');
input.keyup(function(e) {
if (e.keyCode == 8) { //Если нажат backspace
phone[currentID] = "_";
if (currentID == 7 || currentID == 11 || currentID == 14) {
currentID -= 2;
} else if (currentID > 3) {
currentID--;
}
} else if (e.keyCode < 58 && e.keyCode > 47) { //Если нажаты цифры
phone[currentID] = String.fromCharCode(e.keyCode);
if (currentID == 5 || currentID == 9 || currentID == 12) {
currentID += 2;
} else if (currentID != 15) {
currentID++;
}
}
input.val(phone);
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input name="feedback__phone" />
Строки в js неизменяемые - это означает, что нельзя присвоить отдельный символ строки.
Одно из решений, например:
var phoneArr = phone.split('')phoneArr[currentID] = charphone = phoneArr.join('')Первый шаг можно опустить, если хранить в phone - сразу массив и приводить его к строке в момент передачи в input.val(...)
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости