Метод set в библиотеке AutoNumeric используется для
программной установки значения в поле, управляемое экземпляром
AutoNumeric. Это один из ключевых методов библиотеки, поскольку
позволяет синхронизировать пользовательский интерфейс с данными
приложения, обновлять значения динамически, выполнять загрузку данных с
сервера и изменять содержимое поля без прямого взаимодействия
пользователя.
Метод автоматически:
minimumValue и
maximumValue;anElement.set(value);
Где:
anElement — экземпляр AutoNumeric;value — новое значение.<input id="price">
const price = new AutoNumeric('#price', {
currencySymbol: '₸ ',
digitGroupSeparator: ' ',
decimalCharacter: ','
});
price.set(150000);
Результат в поле:
₸ 150 000
Метод принимает число и автоматически форматирует его согласно настройкам экземпляра.
Метод способен принимать строку.
price.set('250000');
AutoNumeric преобразует строку во внутренний числовой формат и затем выполнит форматирование.
const amount = new AutoNumeric('#amount', {
decimalPlaces: 2,
digitGroupSeparator: ' ',
decimalCharacter: ','
});
amount.set(1250.75);
Результат:
1 250,75
Если количество десятичных знаков превышает допустимое значение
decimalPlaces, библиотека автоматически выполнит
округление.
const tax = new AutoNumeric('#tax', {
decimalPlaces: 2
});
tax.set(15.6789);
Результат:
15.68
const balance = new AutoNumeric('#balance', {
currencySymbol: '$',
negativeBracketsTypeOnBlur: '(,)'
});
balance.set(-5000);
При потере фокуса значение может отображаться так:
($5,000)
anElement.set(0);
Результат зависит от настроек:
const field = new AutoNumeric('#field', {
currencySymbol: '€ ',
decimalPlaces: 2
});
field.set(0);
Отображение:
€ 0.00
Для очистки поля обычно используется:
anElement.set('');
или:
anElement.clear();
Разница заключается в том, что clear() предназначен
именно для очистки и лучше отражает намерение разработчика.
nullПоведение зависит от конфигурации AutoNumeric.
anElement.set(null);
В большинстве случаев поле будет очищено.
Один из самых распространённых сценариев — загрузка данных из API.
fetch('/api/product/1')
.then(response => response.json())
.then(data => {
price.set(data.price);
});
Если сервер возвращает:
{
"price": 349990
}
то поле автоматически покажет форматированное значение.
const salary = new AutoNumeric('#salary', {
currencySymbol: '₽ ',
digitGroupSeparator: ' '
});
document.querySelector('#fill').addEventListener('click', () => {
salary.set(120000);
});
const fields = {
income: new AutoNumeric('#income'),
expense: new AutoNumeric('#expense'),
profit: new AutoNumeric('#profit')
};
fields.income.set(500000);
fields.expense.set(175000);
fields.profit.set(325000);
const price = new AutoNumeric('#price');
const quantity = new AutoNumeric('#quantity');
const total = new AutoNumeric('#total');
price.set(1200);
quantity.set(5);
const result =
Number(price.getNumber()) *
Number(quantity.getNumber());
total.set(result);
async function loadBalance() {
const response = await fetch('/balance');
const data = await response.json();
balance.set(data.amount);
}
maximumValueconst field = new AutoNumeric('#field', {
maximumValue: '100'
});
field.set(150);
Поведение зависит от настроек библиотеки и версии AutoNumeric:
minimumValueconst field = new AutoNumeric('#field', {
minimumValue: '0'
});
field.set(-10);
AutoNumeric проверяет диапазон ещё до отображения значения.
const usd = new AutoNumeric('#usd', {
currencySymbol: '$ ',
currencySymbolPlacement: 'p'
});
usd.set(9999.99);
Результат:
$ 9,999.99
Метод set особенно важен в реактивных интерфейсах:
function applyDiscount(percent) {
const current = Number(price.getNumber());
const discounted =
current - (current * percent / 100);
price.set(discounted);
}
const loan = new AutoNumeric('#loan');
const interest = new AutoNumeric('#interest');
const payment = new AutoNumeric('#payment');
function calculate() {
const l = Number(loan.getNumber());
const i = Number(interest.getNumber());
payment.set(l + (l * i / 100));
}
document.querySelectorAll('.price').forEach((element, index) => {
const an = AutoNumeric.getAutoNumericElement(element);
an.set(index * 1000);
});
const input = document.querySelector('#amount');
const an = new AutoNumeric(input);
an.set(500);
const an = new AutoNumeric('#sum');
an.set(1000);
setTimeout(() => {
an.set(2000);
}, 3000);
Каждый вызов set полностью заменяет текущее значение
поля.
an.set(100);
an.set(200);
an.set(300);
Итоговое значение:
300
input.addEventListener('change', () => {
total.set(5000);
});
const netto = new AutoNumeric('#netto');
const tax = new AutoNumeric('#tax');
const brutto = new AutoNumeric('#brutto');
function updateBrutto() {
const n = Number(netto.getNumber());
const t = Number(tax.getNumber());
brutto.set(n + t);
}
const population = new AutoNumeric('#population', {
digitGroupSeparator: ' '
});
population.set(1234567890);
Результат:
1 234 567 890
const percent = new AutoNumeric('#percent', {
suffixText: ' %',
decimalPlaces: 1
});
percent.set(12.5);
Результат:
12.5 %
getМетоды set и get обычно используются
вместе.
const amount = new AutoNumeric('#amount');
amount.set(5000);
const value = amount.get();
get() вернёт числовую строку без форматирования.
set
от прямого изменения valueНеправильный вариант:
input.value = '1000';
В этом случае AutoNumeric:
Правильный вариант:
an.set(1000);
Во фреймворках вроде React, Vue и Angular метод set
часто используется после обновления состояния.
watch(priceValue, (newValue) => {
an.set(newValue);
});
Метод set выполняет:
При большом количестве полей рекомендуется избегать лишних вызовов.
Плохо:
setInterval(() => {
an.set(Math.random() * 1000);
}, 10);
Лучше:
requestAnimationFrame(() => {
an.set(value);
});
an.set('1 000,50 ₽');
Это может привести к ошибке парсинга.
Предпочтительно:
an.set(1000.50);
или:
an.set('1000.50');
set до инициализацииconst an;
an.set(100);
Ошибка:
Cannot read properties of undefined
setan.set(500);
input.value = '123';
Такое смешивание подходов нарушает внутреннюю логику AutoNumeric.
Во многих версиях AutoNumeric метод возвращает экземпляр объекта, что позволяет использовать цепочки вызовов.
an.set(1000).select();
an.set(1500);
console.log(an.getFormatted());
console.log(an.getNumber());
console.log(an.getNumericString());
async function refreshData() {
const data = await loadData();
amount.set(data.total);
}
discountInput.addEventListener('input', () => {
const base = Number(price.getNumber());
const discount = Number(discountInput.value);
finalPrice.set(
base - (base * discount / 100)
);
});
set