Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 29.08.2021, 19:55
Новичок на форуме
Отправить личное сообщение для romzes5 Посмотреть профиль Найти все сообщения от romzes5
 
Регистрация: 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.
Ответить с цитированием
  #2 (permalink)  
Старый 29.08.2021, 20:01
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,126

romzes5,
Пожалуйста, отформатируйте свой код!

Для этого его можно заключить в специальные теги: js/css/html и т.п., например:
[html run]
... минимальный код страницы с вашей проблемой
[/html]

О том, как вставить в сообщение исполняемый javascript и html-код, а также о дополнительных возможностях форматирования - читайте http://javascript.ru/formatting.
Ответить с цитированием
  #3 (permalink)  
Старый 29.08.2021, 20:05
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,126

Сообщение от romzes5
У меня если маска сработала ("00-00 000000" только цифры), то она уже не сбрасывается.
читать документацию на плагин, искать destroy()
Ответить с цитированием
  #4 (permalink)  
Старый 29.08.2021, 20:05
Аватар для voraa
Профессор
Отправить личное сообщение для voraa Посмотреть профиль Найти все сообщения от voraa
 
Регистрация: 03.02.2020
Сообщений: 2,750

Зачем вот это внутри другой функции?
$(document).ready(function() {

Что вы этим хотели сделать?
Ответить с цитированием
  #5 (permalink)  
Старый 30.08.2021, 08:30
Новичок на форуме
Отправить личное сообщение для romzes5 Посмотреть профиль Найти все сообщения от romzes5
 
Регистрация: 29.08.2021
Сообщений: 4

Спасибо за ответ. В документации написано "mask.destroy()", куда бы не вставил, не работает. Можно Вас попросить поподробнее объяснить, как это сделать в моем коде.
Ответить с цитированием
  #6 (permalink)  
Старый 30.08.2021, 08:44
Новичок на форуме
Отправить личное сообщение для romzes5 Посмотреть профиль Найти все сообщения от romzes5
 
Регистрация: 29.08.2021
Сообщений: 4

Спасибо за ответ. Этот код писали ранее. Я начинаю разбираться только. Не могу Вам ответить на этот вопрос.
Ответить с цитированием
  #7 (permalink)  
Старый 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);
//...
Ответить с цитированием
  #8 (permalink)  
Старый 30.08.2021, 09:23
Аватар для voraa
Профессор
Отправить личное сообщение для voraa Посмотреть профиль Найти все сообщения от voraa
 
Регистрация: 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>


Вопрос на засыпку - Когда и сколько раз будут выполняться строки А-Б ?
Ответить с цитированием
  #9 (permalink)  
Старый 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();
                })
            }
        });
Ответить с цитированием
  #10 (permalink)  
Старый 30.08.2021, 09:58
Аватар для voraa
Профессор
Отправить личное сообщение для voraa Посмотреть профиль Найти все сообщения от voraa
 
Регистрация: 03.02.2020
Сообщений: 2,750

рони,
На самом деле я не совсем прав.
Хотя конструкция странная (мне больше показалось странным ready внутри обработчика 'change'.
Это действительно странно, но как ни странно работать должно.
Я не большой знаток jquery. просто сейчас внимательнее посмотрел документацию

$(document).ready(fun1)

не совсем тоже самое, что

document.addEventListener("DOMContentLoaded", fun2)

fun2 сработает только 1 раз, когда DOM построится.

fun1 каждый раз, когда документ DOM построен. Т.е сначала проверяется, если DOM уже построен, то fun1 тут же выполняется, а если не построен, то назначается обработчик
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск