49 lines
1.4 KiB
JavaScript
49 lines
1.4 KiB
JavaScript
|
"use strict";
|
||
|
|
||
|
const $ = selector => document.querySelector(selector);
|
||
|
|
||
|
const getNumericErrorMsg = lbl => `${lbl} must be a valid number.`;
|
||
|
const getRangeErrorMsg = lbl => `${lbl} must be greater than zero.`;
|
||
|
|
||
|
const focusAndSelect = selector => {
|
||
|
const elem = $(selector);
|
||
|
elem.focus();
|
||
|
elem.select();
|
||
|
};
|
||
|
|
||
|
const processEntries = () => {
|
||
|
const miles = parseFloat($("#miles").value);
|
||
|
const gallons = parseFloat($("#gallons").value);
|
||
|
|
||
|
if (isNaN(miles)) {
|
||
|
alert(getNumericErrorMsg("Miles driven"));
|
||
|
focusAndSelect("#miles");
|
||
|
} else if (miles <= 0) {
|
||
|
alert(getRangeErrorMsg("Miles driven"));
|
||
|
focusAndSelect("#miles");
|
||
|
}
|
||
|
else if (isNaN(gallons)) {
|
||
|
alert(getNumericErrorMsg("Gallons of gas used"));
|
||
|
focusAndSelect("#gallons");
|
||
|
} else if (gallons <= 0) {
|
||
|
alert(getRangeErrorMsg("Gallons of gas used"));
|
||
|
focusAndSelect("#gallons");
|
||
|
}
|
||
|
else {
|
||
|
$("#mpg").value = (miles / gallons).toFixed(2);
|
||
|
}
|
||
|
};
|
||
|
|
||
|
const clearEntries = () => {
|
||
|
$("#miles").value = "";
|
||
|
$("#gallons").value = "";
|
||
|
$("#mpg").value = "";
|
||
|
$("#miles").focus();
|
||
|
}
|
||
|
|
||
|
document.addEventListener("DOMContentLoaded", () => {
|
||
|
$("#calculate").addEventListener("click", processEntries);
|
||
|
$("#clear").addEventListener("click", clearEntries);
|
||
|
$("#miles").addEventListener("dblclick", clearEntries);
|
||
|
$("#miles").focus();
|
||
|
});
|