Уничтожение экземпляра

Уничтожение экземпляра AutoNumeric представляет собой процесс полного удаления функционала библиотеки с конкретного HTML-элемента <input>, к которому ранее была привязана маска форматирования чисел. Этот процесс необходим для освобождения ресурсов, предотвращения конфликтов при повторной инициализации, а также для корректного удаления всех обработчиков событий и внутренних данных, связанных с экземпляром.

Методы уничтожения

AutoNumeric предоставляет метод remove(), который выполняет полное разрушение экземпляра. Метод вызывается на объекте AutoNumeric, созданном для конкретного поля ввода:

const anElement = new AutoNumeric('#myInput', 1234.56, { digitGroupSeparator: ',' });

// Уничтожение экземпляра
anElement.remove();

После вызова remove():

  • События ввода и фокусировки, привязанные библиотекой, удаляются.
  • Внутренние данные и ссылки на экземпляр становятся недоступными.
  • Значение поля возвращается в стандартный вид без форматирования (по умолчанию как строка).

Уничтожение через селектор

Если экземпляр AutoNumeric был привязан к элементу через селектор или при массовой инициализации, можно использовать статический метод AutoNumeric.getAutoNumericElement для получения экземпляра и последующего его удаления:

const anInstance = AutoNumeric.getAutoNumericElement('#myInput');
if (anInstance) {
    anInstance.remove();
}

Это особенно важно при динамическом создании элементов формы, когда объекты <input> могут появляться и исчезать в DOM.

Очистка значений перед уничтожением

AutoNumeric сохраняет в поле форматированное значение. Перед уничтожением экземпляра можно получить чистое числовое значение через методы getNumber() или getNumericString(), чтобы сохранить данные для дальнейшей обработки:

const anInstance = AutoNumeric.getAutoNumericElement('#myInput');
if (anInstance) {
    const rawValue = anInstance.getNumber(); // Получение числа
    anInstance.remove();
}

Использование этих методов гарантирует, что данные не будут потеряны при удалении экземпляра.

Особенности массового уничтожения

Если библиотека была применена к группе элементов через селектор класса, можно выполнить массовое удаление всех экземпляров, используя метод AutoNumeric.getAutoNumericElementList:

const allInstances = AutoNumeric.getAutoNumericElementList('.numeric-input');
allInstances.forEach(instance => instance.remove());

Это предотвращает утечки памяти и обеспечивает корректное управление динамическими формами.

Взаимодействие с динамическим DOM

При удалении элементов из DOM, к которым привязан AutoNumeric, рекомендуется сначала вызвать remove(), а затем удалить элемент из документа. Это предотвращает сохранение обработчиков событий в памяти и возможные ошибки при повторной инициализации:

const input = document.querySelector('#dynamicInput');
const anInstance = AutoNumeric.getAutoNumericElement(input);
if (anInstance) {
    anInstance.remove();
}
input.remove();

Влияние на состояние формы

После уничтожения экземпляра AutoNumeric значение в <input> возвращается в обычный текстовый формат. При необходимости можно сразу присвоить новое значение или применить другой экземпляр AutoNumeric для форматирования:

anInstance.remove();
input.value = "0"; // Новый стандартный ввод

Рекомендации по использованию

  • Всегда вызывать remove() перед удалением элемента из DOM.
  • Сохранять данные через getNumber() или getNumericString() перед уничтожением.
  • Для массовой работы с группами элементов использовать getAutoNumericElementList.
  • Избегать повторной инициализации без уничтожения предыдущего экземпляра, чтобы предотвратить конфликты событий и неправильное форматирование.

Уничтожение экземпляра AutoNumeric — ключевой элемент управления жизненным циклом числовых полей, обеспечивающий чистоту DOM и корректную работу динамических интерфейсов.