New to javascript and just trying to make a simple form validation where if the user/pass is valid the box border turns green, and if invalid, it turns red (pictured) Valid/Invalid
Here is my HTML: (Form Works, I'm guessing I'm screwing up on the listeners and Handlers)
<!DOCTYPE html>
<html>
<body>
<form action="/action_page.php">
<input type="text" name="username" value="Username" minLength="6" maxlength="10" required>
<br><br>
<input type="text" name="password" value="Password" minLength="8" maxlength="15" required>
<br><br>
<input type="submit" value="Submit" onclick="function(changeStyle)">
</form>
<script src="Script1.js">
</script>
</body>
</html>
Javascript:
function valid() {
var textElements = document.getElementsByTagName('input');
textElements[i].addEventListener('input', function(changeStyle) {
if (event.target.validity.valid) {
textElements[i].style.border = "solid green 2px";
textElements[i].style.boxShadow = "0 0 5px green";
} else {
textElements[i].style.border = "solid red 2px";
textElements[i].style.boxShadow = "0 0 5px red";
}
}, false);
}
</script>
textElements[i].
) but you do not have an iteration loop in your code.So what I've done is:
.forEach
by using the Spread operatorE.g.
<!DOCTYPE html>
<html>
<body>
<form action="/action_page.php">
<input type="text" name="username" value="Username" minLength="6" maxlength="10" required>
<br><br>
<input type="text" name="password" value="Password" minLength="8" maxlength="15" required>
<br><br>
<input type="submit" value="Submit" onclick="function()">
</form>
<script>
document.addEventListener("DOMContentLoaded", function() {
var textElements = [...document.getElementsByTagName('input')];
var listen = function(item, index) {
item.addEventListener('keyup', function(ev){
if (event.target.validity.valid) {
item.style.border = "solid green 2px";
item.style.boxShadow = "0 0 5px green";
} else {
item.style.border = "solid red 2px";
item.style.boxShadow = "0 0 5px red";
}
})
}
textElements.forEach(listen);
});
</script>
</body>
</html>