<form>
<label for="principal-loan">
Principal loan amount
<input type="text" name="principal-loan" id="principal-loan" />
</label>
<label for="interest-rate">
Interest rate
<div>
<input type="text" name="interest-rate" id="interest-rate" /><span
>%</span
>
</div>
</label>
<label for="length-loan">
Length of Loan
<div>
<input type="text" name="length-loan" id="length-loan" />
<span>years</span>
</div>
</label>
<input type="submit" value="Calculate" id="submit" />
</form>
<p id="payment"></p>
html,
body {
height: 100vh;
margin: 0;
}
body {
display: flex;
flex-direction: column;
justify-content: center;
align-items: center;
background: whitesmoke;
font-size: 1.15em;
}
form {
display: flex;
flex-direction: column;
justify-content: space-evenly;
align-items: center;
width: 35%;
height: 15em;
padding: 1em;
background: white;
border: 1px solid black;
border-radius: 5px;
}
label {
display: flex;
flex-direction: column;
width: 95%;
font-size: 1.25em;
}
span {
margin-left: 0.3em;
}
input {
width: 75%;
}
.error {
border: 1px red solid;
}
input[type="submit"] {
width: 10em;
border: none;
border-radius: 5px;
padding: 0.5em 1em;
background: rgb(47, 47, 150);
color: white;
font-size: 0.85em;
cursor: pointer;
}
input[type="submit"]:hover {
background: rgb(63, 63, 199);
}
input[type="submit"]:active {
background: rgb(47, 47, 150);
}
@media (max-width: 700px) {
form {
width: 90%;
}
}
document.getElementById("submit").addEventListener("click", calculate);
function calculate(event) {
event.preventDefault();
const p = document.getElementById("principal-loan").value;
let r = document.getElementById("interest-rate").value;
let n = document.getElementById("length-loan").value;
if (isNaN(p) || isNaN(r) || isNaN(n) || !p.length || !r.length || !n.length) {
if (isNaN(p) || !p.length) {
document.getElementById("principal-loan").classList.add("error");
} else {
document.getElementById("principal-loan").classList.remove("error");
}
if (isNaN(r) || !r.length) {
document.getElementById("interest-rate").classList.add("error");
} else {
document.getElementById("interest-rate").classList.remove("error");
}
if (isNaN(n) || !n.length) {
document.getElementById("length-loan").classList.add("error");
} else {
document.getElementById("length-loan").classList.remove("error");
}
document.getElementById("payment").innerText = "";
return false;
} else {
document.getElementById("principal-loan").classList.remove("error");
document.getElementById("interest-rate").classList.remove("error");
document.getElementById("length-loan").classList.remove("error");
}
r = r / 100 / 12;
n *= 12;
let payment = p * ((r * Math.pow(1 + r, n)) / (Math.pow(1 + r, n) - 1));
document.getElementById("payment").innerText =
"Your monthly mortgage payment will be $" + parseInt(payment);
}
This Pen doesn't use any external CSS resources.
This Pen doesn't use any external JavaScript resources.