Не присваивается корректно значение переменной в input.value с jquery.inputmask.js
Есть input name="phone" с маской номера. при вводе телефона в нем будет значение например "+357 91-111-111". Перед отправкой формы я обрабатываю это значение чтобы привести его к строке вида "+35791111111" (именно в таком виде необходимо отправить форму). Но при присваивании значение не заменяется полностью (форма отправляет "+357 93-579-111"), а добавляется к постоянному значению маски и сохраняет все ненужные символы. Подозреваю что проблема в специфике работы скрипта маски, но все же хочется решить эту проблему оставив скрипт маски
$(document).ready(function () {
$("#phone").inputmask({
mask: "+357 \\99-999-999",
});
});
document
.getElementById("lead-form")
.addEventListener("submit", function (event) {
let phoneInput = this.phone.value;
console.log(phoneInput); //+357 91-111-111
function transformPhoneNumber(phone) {
// Удаляем все символы, кроме цифр
return phone.replace(/[^\d]/g, "");
}
const value = transformPhoneNumber(phoneInput);
console.log(value); //35791111111
// Проверка длины введенного номера
if (value.length < 11) {
event.preventDefault(); // Запретить отправку формы
return;
} else {
// Получаем значение из скрытого инпута
const phonecc = this.phonecc.value; //тут пока просто будет знак "+"
// Добавляем значение в phone
console.log(phonecc + value); //+35791111111
this.phone.value = phonecc + value;
console.log(this.phone.value); //+357 93-579-111 !!!!
// Форма будет отправлена с обновленным значением
this.submit();
}
});
Ответы (1 шт):
Автор решения: Owlly
→ Ссылка
можно отключить маску перед отправкой формы, потом включить её если надо
$(document).ready(function () {
$("#phone").inputmask({
mask: "+357 \\99-999-999",
});
});
document.getElementById("lead-form").addEventListener("submit", function (event) {
let phoneInput = this.phone.value;
console.log(phoneInput); // Например, "+357 91-111-111"
function transformPhoneNumber(phone) {
// Удаляем все символы, кроме цифр
return phone.replace(/[^\d]/g, "");
}
const value = transformPhoneNumber(phoneInput);
console.log(value); // "35791111111"
if (value.length < 11) {
console.log("Введите корректный номер телефона");
return; // Не отправляем форму
} else {
// Убираем маску перед изменением значения
$("#phone").inputmask("remove");
const phonecc = this.phonecc.value;
this.phone.value = phonecc + value;
console.log(this.phone.value); // "+35791111111"
// Отправляем форму
this.submit();
}
});