Менять (установить) маску в "Input" по условию
Здравствуйте! Помогите пожалуйста с установкой маски по условию. В зависимости от выбранного пункта "Select" маска либо нужна, либо не нужна. У меня если маска сработала ("00-00 000000" только цифры), то она уже не сбрасывается. Подскажите пожалуйста, как это реализовать. Заранее вас благодарю!
Мой код:
<script>
let select = document.querySelector('#select_vid_doc1')
if (select) {
let val = select.value
select.addEventListener('change', function() {
val = this.value
console.log(val)
$(document).ready(function() {
var element = document.getElementById("seria1");
if (element != null) {
if (val == 1) { varmaskOptions = { mask:"000000000000"};
var mask = new IMask(element, maskOptions);
}
if (val != 1) {
var maskOptions = { mask:"*******************"};
var mask = new IMask(element, maskOptions);
}}
})
})
}
</script>
|
romzes5,
Пожалуйста, отформатируйте свой код! Для этого его можно заключить в специальные теги: js/css/html и т.п., например: [html run] ... минимальный код страницы с вашей проблемой [/html] О том, как вставить в сообщение исполняемый javascript и html-код, а также о дополнительных возможностях форматирования - читайте http://javascript.ru/formatting. |
Цитата:
|
Зачем вот это внутри другой функции?
$(document).ready(function() { Что вы этим хотели сделать? |
Спасибо за ответ. В документации написано "mask.destroy()", куда бы не вставил, не работает. Можно Вас попросить поподробнее объяснить, как это сделать в моем коде.
|
Спасибо за ответ. Этот код писали ранее. Я начинаю разбираться только. Не могу Вам ответить на этот вопрос.
|
Цитата:
Цитата:
//... if(varmask) varmask.destroy(); varmask = newIMask(element, maskOptions); //... |
рони,
Причем тут все эти описки. Вот как по идеи должен был выглядеть этот кусок кода.
<script>
let select = document.querySelector('#select_vid_doc1')
if (select) {
let val = select.value
select.addEventListener('change', function() {
val = this.value
console.log(val)
$(document).ready(function() {
var element = document.getElementById("seria1"); // A
if (element != null) {
if (val == 1) {
var maskOptions = { mask:"000000000000"};
var mask = new IMask(element, maskOptions);
}
if (val != 1) {
var maskOptions = { mask:"*******************"};
var mask = new IMask(element, maskOptions);
}
} // Б
})
})
}
</script>
Вопрос на засыпку - Когда и сколько раз будут выполняться строки А-Б ? |
voraa,
ready внутри if ... странная конструкция. возможно так ...
document.addEventListener("DOMContentLoaded", function() {
let select = document.querySelector('#select_vid_doc1');
let element = document.getElementById("seria1");
let maskOptions = {
mask: "000000000000"
};
let mask;
if (select && element) {
select.addEventListener('change', function() {
let val = this.value;
if (val == 1) mask = new IMask(element, maskOptions);
else if (mask) mask.destroy();
})
}
});
|
рони,
На самом деле я не совсем прав. Хотя конструкция странная (мне больше показалось странным ready внутри обработчика 'change'. Это действительно странно, но как ни странно работать должно. Я не большой знаток jquery. просто сейчас внимательнее посмотрел документацию $(document).ready(fun1) не совсем тоже самое, что document.addEventListener("DOMContentLoaded", fun2) fun2 сработает только 1 раз, когда DOM построится. fun1 каждый раз, когда документ DOM построен. Т.е сначала проверяется, если DOM уже построен, то fun1 тут же выполняется, а если не построен, то назначается обработчик |
| Часовой пояс GMT +3, время: 00:56. |