Цитата:
|
Добрый вечер, Рони!
Давно пользуюсь вариантом из поста #5 )) отличный вариант, я считаю, можно выделять весь номер и переписывать. Но не суть. На сайте после загрузки страницы в поле номера подставляются данные из онлайн-консультанта. В самой программе консультанта все номера меняются на формат без скобок и пробелов +79999999999, соответственно подставляются в таком же виде. Маска применяется только при фокусе на инпут. Перебрал все эвентлистенерс, но ничего не помогло, подскажите как решить вопрос?) |
timlsf,
не особо понял, в чём у вас проблема. если программа меняет значение инпута, то вызовите фокус на инпуте после этой программы, либо по таймеру. |
Да, проблема была в том, что при загрузке страницы я видел подставленный номер в формате 79999999999, маска применялась только при нажатии.
в стороннем скрипте добавил такое, возможно это было очевидно, но может кому пригодится: .. var event = new Event("input"); input.dispatchEvent(event); .. Все заработало. спасибо за подсказку |
Доброго времени суток, подскажите как код можно вынести в отдельный файл js ? Который подключается <script src="/assets/components/---.js"></script>
Большое спасибо! |
Вадим Вадимыч,
в чём проблема? |
Рони
Рони, прошу прошения разобрался, сам виноват косяк вышел! Скрипт просто бомба, маленький не то что всем известный плагин. Спасибо вам за вклад в развитие общего дела! |
Приветствую!
Хелп, нужно чтобы при вводе телефона, пробел не подставлялся <form action="" method="post"> <input placeholder="Telefono" name="phone" type="tel" class="wv_phone" required id="phone1"> <button>go</button> </form> <script> window.addEventListener("DOMContentLoaded", function() { [].forEach.call( document.querySelectorAll('.wv_phone'), function(input) { var keyCode; function mask(event) { event.keyCode && (keyCode = event.keyCode); var pos = this.selectionStart; if (pos < 3) event.preventDefault(); var matrix = "+39 __________", i = 0, def = matrix.replace(/\D/g, ""), val = this.value.replace(/\D/g, ""), new_value = matrix.replace(/[_\d]/g, function(a) { return i < val.length ? val.charAt(i++) || def.charAt(i) : a }); i = new_value.indexOf("_"); if (i != -1) { i < 5 && (i = 3); new_value = new_value.slice(0, i) } var reg = matrix.substr(0, this.value.length).replace(/_+/g, function(a) { return "\\d{0," + a.length + "}" }).replace(/[+()]/g, "\\$&"); reg = new RegExp("^" + reg + "$"); if (!reg.test(this.value) || this.value.length < 5 || keyCode > 47 && keyCode < 58) this.value = new_value; if (event.type == "blur" && this.value.length < 5) this.value = "" } input.addEventListener("input", mask, false); input.addEventListener("focus", mask, false); input.addEventListener("blur", mask, false); input.addEventListener("keydown", mask, false) }); }); </script> Убираю пробел в строке var matrix = "+39__________", скрипт перестает работать, не дает ничего ввести... |
seroja,
строка 23, 5 заменить на 3 |
Цитата:
|
Часовой пояс GMT +3, время: 15:43. |