values checking added
This commit is contained in:
134
hw/hw7/hw7.js
134
hw/hw7/hw7.js
@@ -141,7 +141,7 @@ function updateCalculateButton() {
|
||||
else {
|
||||
ret = inputsB["l"] !== null && inputsB["angle"] !== null
|
||||
}
|
||||
ret &= elements.outputR.checked || elements.outputH.checked ||elements.outputL.checked;
|
||||
ret &= elements.outputR.checked || elements.outputH.checked || elements.outputL.checked;
|
||||
|
||||
elements.calculateButton.disabled = !ret;
|
||||
}
|
||||
@@ -209,6 +209,30 @@ function clearInputs() {
|
||||
}
|
||||
elements.outputsTable.classList.add("hidden");
|
||||
}
|
||||
function checkAngle(angleString) {
|
||||
let angle = parseFloat(angleString);
|
||||
if (isNaN(angle)) {
|
||||
return "Введите корректное число";
|
||||
}
|
||||
if (angle <= 0) {
|
||||
return "Угол должен быть больше 0";
|
||||
}
|
||||
if (angle >= 180) {
|
||||
return "Угол должен быть меньше 180";
|
||||
}
|
||||
return "";
|
||||
}
|
||||
|
||||
function checkLength(lengthString) {
|
||||
let length = parseFloat(lengthString);
|
||||
if (!isFinite(length)) {
|
||||
return "Введите корректное число";
|
||||
}
|
||||
if (length <= 0) {
|
||||
return "Длина должна быть больше 0";
|
||||
}
|
||||
return "";
|
||||
}
|
||||
|
||||
elements.outputsFieldset.addEventListener('change', function (event) {
|
||||
if (event.target.type === 'checkbox') {
|
||||
@@ -216,41 +240,85 @@ elements.outputsFieldset.addEventListener('change', function (event) {
|
||||
}
|
||||
});
|
||||
|
||||
elements.inputsForm.addEventListener('change', function (event) {
|
||||
if (event.target.type === 'radio') {
|
||||
if (event.target.id[event.target.id.length - 1].toLowerCase() == "a") {
|
||||
currentModeIsA = true;
|
||||
switchAppearance(true);
|
||||
console.log("Switching inputs to A");
|
||||
}
|
||||
else {
|
||||
currentModeIsA = false
|
||||
switchAppearance(false);
|
||||
console.log("Switching inputs to B");
|
||||
elements.inputsForm.addEventListener('change', handleInputEvent);
|
||||
elements.inputsForm.addEventListener('input', handleInputEvent);
|
||||
|
||||
}
|
||||
} else if (event.target.type === 'number') {
|
||||
switch (event.target.id) {
|
||||
case "equalSideLength":
|
||||
inputsA.l = parseFloat(event.target.value) || 0;
|
||||
break;
|
||||
case "baseAngle":
|
||||
inputsA.angle = parseFloat(event.target.value) || 0;
|
||||
break;
|
||||
case "baseSideLength":
|
||||
inputsB.l = parseFloat(event.target.value) || 0;
|
||||
break;
|
||||
case "baseAdjacentAngle":
|
||||
inputsB.angle = parseFloat(event.target.value) || 0;
|
||||
break;
|
||||
default:
|
||||
console.log(event.target.id)
|
||||
break;
|
||||
}
|
||||
updateCalculateButton();
|
||||
function handleSwitchInputs(event) {
|
||||
if (event.target.id[event.target.id.length - 1].toLowerCase() == "a") {
|
||||
currentModeIsA = true;
|
||||
switchAppearance(true);
|
||||
console.log("Switching inputs to A");
|
||||
}
|
||||
else {
|
||||
currentModeIsA = false
|
||||
switchAppearance(false);
|
||||
console.log("Switching inputs to B");
|
||||
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
function HandleInputsUpdate(event) {
|
||||
switch (event.target.id) {
|
||||
case "equalSideLength":
|
||||
{
|
||||
const err = checkLength(event.target.value);
|
||||
setErrTooltip(0, err);
|
||||
if (err === "") {
|
||||
inputsA.l = parseFloat(event.target.value);
|
||||
} else {
|
||||
inputsA.l = null;
|
||||
}
|
||||
}
|
||||
break;
|
||||
case "baseAngle":
|
||||
{
|
||||
const err = checkAngle(event.target.value);
|
||||
setErrTooltip(1, err);
|
||||
if (err === "") {
|
||||
inputsA.angle = parseFloat(event.target.value);
|
||||
} else {
|
||||
inputsA.angle = null;
|
||||
}
|
||||
}
|
||||
break;
|
||||
case "baseSideLength":
|
||||
{
|
||||
const err = checkLength(event.target.value);
|
||||
setErrTooltip(2, err);
|
||||
if (err === "") {
|
||||
inputsB.l = parseFloat(event.target.value);
|
||||
} else {
|
||||
inputsB.l = null;
|
||||
}
|
||||
}
|
||||
break;
|
||||
case "baseAdjacentAngle":
|
||||
{
|
||||
const err = checkAngle(event.target.value);
|
||||
setErrTooltip(3, err);
|
||||
if (err === "") {
|
||||
inputsB.angle = parseFloat(event.target.value);
|
||||
} else {
|
||||
inputsB.angle = null;
|
||||
}
|
||||
}
|
||||
break;
|
||||
default:
|
||||
console.log(event.target.id)
|
||||
break;
|
||||
}
|
||||
updateCalculateButton();
|
||||
|
||||
}
|
||||
|
||||
function handleInputEvent(event) {
|
||||
if (event.target.type === 'radio') {
|
||||
handleSwitchInputs(event);
|
||||
} else if (event.target.type === 'number') {
|
||||
HandleInputsUpdate(event);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
elements.clearButton.addEventListener('click', (event) => {
|
||||
event.preventDefault();
|
||||
|
||||
Reference in New Issue
Block a user