Цитата:
|
Добрый вечер, Рони!
Давно пользуюсь вариантом из поста #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, время: 04:18. |