Как изменять значения в Input в зависимости от значений в других Input?
Делаю конвертер валют по курсу Нацбанка Беларуси. Получилось конвертировать, когда ввожу BYN. Но другие валюты по итогу просто нельзя поменять. Вот как это реализовано на фронте. Если вы загрузили страницу и курсы не появились, то перезагрузите ещё раз (я пока не понял почему так, разбираюсь с другим). Когда загрузятся курсы, тогда можете менять значения в поле BYN - всё считает нормально. А после этого - не могу ввести никаких данных в другие поля.
Вот код:
$('#nbrbBYNInput, #nbrbUSDInput, #nbrbEURInput, #nbrbPLNInput, #nbrbUAHInput, #nbrbRUBInput').on('input', function () {
let BYNValue = +document.getElementById('nbrbBYNInput').value;
let USDValue = +document.getElementById('nbrbUSDInput').value;
let EURValue = +document.getElementById('nbrbEURInput').value;
let PLNValue = +document.getElementById('nbrbPLNInput').value;
let UAHValue = +document.getElementById('nbrbUAHInput').value;
let RUBValue = +document.getElementById('nbrbRUBInput').value;
let USDSum = 0;
let EURSum = 0;
let BYNSum = 0
let PLNSum = 0;
let UAHSum = 0;
let RUBSum = 0;
EURSum = BYNValue / eurTodayRate;
USDSum = BYNValue / usdTodayRate;
PLNSum = BYNValue / plnTodayRate;
UAHSum = BYNValue / uahTodayRate;
RUBSum = BYNValue / rubTodayRate;
document.getElementById('nbrbEURInput').value = EURSum.toFixed(4);
document.getElementById('nbrbUSDInput').value = USDSum.toFixed(4);
document.getElementById('nbrbPLNInput').value = PLNSum.toFixed(4);
document.getElementById('nbrbUAHInput').value = UAHSum.toFixed(4);
document.getElementById('nbrbRUBInput').value = RUBSum.toFixed(4);
});
Ответы (1 шт):
Не знаю насколько по канонам js, но в итоге я просто разделил oninput. Вот так получилось для ввода BYN:
$('#nbrbBYNInput').on('input', function (){
let BYNValue = +document.getElementById('nbrbBYNInput').value;
EURSum = BYNValue / eurTodayRate;
USDSum = BYNValue / usdTodayRate;
PLNSum = BYNValue / plnTodayRate;
UAHSum = BYNValue / uahTodayRate;
RUBSum = BYNValue / rubTodayRate;
document.getElementById('nbrbEURInput').value = EURSum.toFixed(4);
document.getElementById('nbrbUSDInput').value = USDSum.toFixed(4);
document.getElementById('nbrbPLNInput').value = PLNSum.toFixed(4);
document.getElementById('nbrbUAHInput').value = UAHSum.toFixed(4);
document.getElementById('nbrbRUBInput').value = RUBSum.toFixed(4);
});
Вот так для ввода USD:
$('#nbrbUSDInput').on('input', function () {
let USDValue = +document.getElementById('nbrbUSDInput').value;
BYNSum = USDValue * usdTodayRate;
EURSum = BYNSum / eurTodayRate;
PLNSum = BYNSum / plnTodayRate;
UAHSum = BYNSum / uahTodayRate;
RUBSum = BYNSum / rubTodayRate;
document.getElementById('nbrbEURInput').value = EURSum.toFixed(4);
document.getElementById('nbrbPLNInput').value = PLNSum.toFixed(4);
document.getElementById('nbrbUAHInput').value = UAHSum.toFixed(4);
document.getElementById('nbrbRUBInput').value = RUBSum.toFixed(4);
document.getElementById('nbrbBYNInput').value = BYNSum.toFixed(4);
});
Для последующих валют точно также. Буду рад, если подскажите как сократить код и сделать лучше.