Проверка инициализации элемента

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

Методы проверки инициализации

Основным методом проверки является статический метод AutoNumeric.isManaged(element). Он возвращает логическое значение:

const input = document.querySelector('#price');
const isInitialized = AutoNumeric.isManaged(input); // true или false
  • Параметр element – HTMLInputElement или его идентификатор.
  • Возвращаемое значениеtrue, если элемент управляется AutoNumeric, и false, если нет.

Этот метод полезен при динамическом создании элементов на странице или при повторной инициализации, чтобы избежать ошибок повторного присвоения экземпляра.

Проверка экземпляра AutoNumeric

После инициализации экземпляра можно использовать метод AutoNumeric.getAutoNumericElement(element) для получения ссылки на объект AutoNumeric, связанный с конкретным элементом:

const anElement = AutoNumeric.getAutoNumericElement(input);
if (anElement) {
    console.log('Элемент инициализирован', anElement);
} else {
    console.log('Элемент не инициализирован');
}
  • Если элемент не инициализирован, метод возвращает null.
  • Полученный объект предоставляет доступ ко всем методам управления числовым вводом, включая getNumber(), set(), update() и другие.

Прямой доступ к текущему состоянию

Каждый экземпляр AutoNumeric хранит внутреннее состояние, которое можно использовать для проверки корректности инициализации:

if (anElement && anElement.domElement === input) {
    console.log('Экземпляр корректно привязан к элементу');
}

Свойство domElement позволяет убедиться, что объект действительно связан с конкретным HTMLInputElement, исключая случаи случайного обращения к другому элементу.

Проверка конфигурации

Метод getSettings() возвращает объект текущей конфигурации AutoNumeric для данного элемента:

const settings = anElement.getSettings();
console.log(settings.decimalPlaces); // количество знаков после запятой
console.log(settings.digitGroupSeparator); // разделитель тысяч

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

Примеры комплексной проверки

  1. Проверка перед повторной инициализацией:
const input = document.querySelector('#amount');

if (!AutoNumeric.isManaged(input)) {
    new AutoNumeric(input, { currencySymbol: '$', decimalPlaces: 2 });
} else {
    console.log('Элемент уже инициализирован');
}
  1. Проверка всех элементов с классом:
const inputs = document.querySelectorAll('.numeric');
inputs.forEach(input => {
    if (AutoNumeric.isManaged(input)) {
        const an = AutoNumeric.getAutoNumericElement(input);
        console.log('Текущие настройки:', an.getSettings());
    } else {
        console.log('Элемент не инициализирован:', input.id);
    }
});

Особенности проверки для динамических элементов

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

  • Проверить наличие уже инициализированных экземпляров.
  • Инициализировать новый элемент только при отсутствии существующего экземпляра.
  • Получить настройки и при необходимости обновить их через метод update().
const newInput = document.createElement('input');
newInput.type = 'text';
document.body.appendChild(newInput);

if (!AutoNumeric.isManaged(newInput)) {
    const an = new AutoNumeric(newInput, { decimalPlaces: 3 });
    console.log('Элемент инициализирован с настройками:', an.getSettings());
}

Выводы по проверке инициализации

  • Использование AutoNumeric.isManaged() позволяет безопасно проверять состояние элементов перед инициализацией.
  • Метод getAutoNumericElement() обеспечивает доступ к экземпляру и его методам.
  • Проверка свойств экземпляра и текущих настроек предотвращает конфликты и повторную инициализацию.
  • Для динамически создаваемых элементов проверка состояния перед применением настроек является обязательной практикой для обеспечения стабильности и корректного форматирования данных.