29.08.2021, 19:55
|
Новичок на форуме
|
|
Регистрация: 29.08.2021
Сообщений: 4
|
|
Менять (установить) маску в "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, 30.08.2021 в 09:11.
|
|
29.08.2021, 20:01
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,126
|
|
romzes5,
Пожалуйста, отформатируйте свой код!
Для этого его можно заключить в специальные теги: js/css/html и т.п., например:
[html run]
... минимальный код страницы с вашей проблемой
[/html]
О том, как вставить в сообщение исполняемый javascript и html-код, а также о дополнительных возможностях форматирования - читайте http://javascript.ru/formatting.
|
|
29.08.2021, 20:05
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,126
|
|
Сообщение от romzes5
|
У меня если маска сработала ("00-00 000000" только цифры), то она уже не сбрасывается.
|
читать документацию на плагин, искать destroy()
|
|
29.08.2021, 20:05
|
|
Профессор
|
|
Регистрация: 03.02.2020
Сообщений: 2,750
|
|
Зачем вот это внутри другой функции?
$(document).ready(function() {
Что вы этим хотели сделать?
|
|
30.08.2021, 08:30
|
Новичок на форуме
|
|
Регистрация: 29.08.2021
Сообщений: 4
|
|
Спасибо за ответ. В документации написано "mask.destroy()", куда бы не вставил, не работает. Можно Вас попросить поподробнее объяснить, как это сделать в моем коде.
|
|
30.08.2021, 08:44
|
Новичок на форуме
|
|
Регистрация: 29.08.2021
Сообщений: 4
|
|
Спасибо за ответ. Этот код писали ранее. Я начинаю разбираться только. Не могу Вам ответить на этот вопрос.
|
|
30.08.2021, 09:05
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,126
|
|
Сообщение от romzes5
|
В документации написано "mask.destroy()",
|
Сообщение от romzes5
|
varmask = newIMask(element, maskOptions);
|
у вас переменная по другому названа, значит будет
//...
if(varmask) varmask.destroy();
varmask = newIMask(element, maskOptions);
//...
|
|
30.08.2021, 09:23
|
|
Профессор
|
|
Регистрация: 03.02.2020
Сообщений: 2,750
|
|
рони,
Причем тут все эти описки.
Вот как по идеи должен был выглядеть этот кусок кода.
<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>
Вопрос на засыпку - Когда и сколько раз будут выполняться строки А-Б ?
|
|
30.08.2021, 09:42
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,126
|
|
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();
})
}
});
|
|
30.08.2021, 09:58
|
|
Профессор
|
|
Регистрация: 03.02.2020
Сообщений: 2,750
|
|
рони,
На самом деле я не совсем прав.
Хотя конструкция странная (мне больше показалось странным ready внутри обработчика 'change'.
Это действительно странно, но как ни странно работать должно.
Я не большой знаток jquery. просто сейчас внимательнее посмотрел документацию
$(document).ready(fun1)
не совсем тоже самое, что
document.addEventListener("DOMContentLoaded", fun2)
fun2 сработает только 1 раз, когда DOM построится.
fun1 каждый раз, когда документ DOM построен. Т.е сначала проверяется, если DOM уже построен, то fun1 тут же выполняется, а если не построен, то назначается обработчик
|
|
|
|