htmlInputValidator
Some html, css and js code bodged together to validate the input fields in a formunknown
html
4 years ago
6.1 kB
23
Indexable
<!DOCTYPE html>
<html>
<head>
<title>Input Validator</title>
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@100;200;300;400;500;600;700&display=swap" rel="stylesheet">
<style>
html, body {
padding: 0;
margin: 0;
background-color: beige;
}
body {
font-family: 'Inter', sans-serif;
font-size: 120%;
}
br {
margin: 10px 0;
}
form {
width: 50vw;
margin-left: 25vw;
margin-top: 10vh;
height: 100%;
}
label {
font-weight: 500;
}
input {
width: 100%;
padding: 5px;
font-size: 100%;
font-family: 'Inter', sans-serif;
}
#buttonContainer {
margin-top: 20px;
width: 100%;
text-align: center;
}
input[type="submit"] {
text-align: center;
width: auto;
}
h2 {
font-size: 200%;
font-weight: 800;
}
.erroneous-input {
border-color: red;
outline-color: red;
}
.erroneous-input::placeholder {
color: red;
}
</style>
<script>
function ResetFieldAttrs(field) {
field.classList.remove("erroneous-input");
}
function ValidatePassword(password) {
var flags;
let spec_chars = '!@#$%^&*()_+?';
if (password.length < 8) return false;
for (var i = 0; i < password.length; i++) {
let ccode = password.charCodeAt(i);
if (ccode >= 65 && ccode <= 90) flags |= 1;
else if (ccode >= 97 && ccode <= 122) flags |= 2;
else if (ccode >= 48 && ccode <= 57) flags |= 4;
else if (spec_chars.indexOf(password[i]) >= 0) flags |= 8;
}
return flags == 15;
}
function ValidateName(name) {
let transformedName = name.toLowerCase();
for (var i = 0; i < name.length; i++) {
if ((transformedName.charCodeAt(i) > 122 || transformedName.charCodeAt(i) < 97) && transformedName.charCodeAt(i) != 32) return false;
}
return name.length > 0;
}
function ValidatePhone(phone) {
if (phone.length == 13) {
if (phone[0] != '+') return false;
for (var i = 1; i <= 12; i++) {
if (phone.charCodeAt(i) < 48 || phone.charCodeAt(i) > 57) return false;
}
return true;
} else if (phone.length == 10) {
for (var i = 0; i < 10; i++) {
if (phone.charCodeAt(i) < 48 || phone.charCodeAt(i) > 57) return false;
}
return true;
}
else return false;
}
function ValidateEmail(email) {
return (email.indexOf('@') > 0 && email.indexOf('@') < email.length - 1);
}
function ValidateForm() {
var form = document.forms["inputForm"];
var name_input = form.name;
var email_input = form.email;
var phone_input = form.phone;
var password_input = form.password;
var flag = true;
if (!ValidateName(name_input.value)) {
name_input.value = "";
name_input.placeholder = "Name is not valid!";
name_input.classList.add("erroneous-input");
flag = false;
}
if (!ValidateEmail(email_input.value)) {
email_input.value = "";
email_input.placeholder = "Email address is not valid!";
email_input.classList.add("erroneous-input");
flag = false;
}
if (!ValidatePhone(phone_input.value)) {
phone_input.value = "";
phone_input.placeholder = "Phone number is not valid!";
phone_input.classList.add("erroneous-input");
flag = false;
}
if (!ValidatePassword(password_input.value)) {
password_input.value = "";
password_input.placeholder = "Password is not strong enough!";
password_input.classList.add("erroneous-input");
flag = false;
}
return flag;
}
</script>
</head>
<body>
<form name="inputForm" onsubmit="return ValidateForm()">
<h2>Personal details</h2>
<label for="name-input">Name:</label><br>
<input type="text" name="name" id="name-input" oninput="ResetFieldAttrs(this)"><br>
<label for="email-input">Email address:</label><br>
<input type="text" name="email" id="email-input" oninput="ResetFieldAttrs(this)"><br>
<label for="phone-input">Phone number:</label><br>
<input type="text" name="phone" id="phone-input" oninput="ResetFieldAttrs(this)"><br>
<label for="password-input">Password:</label><br>
<input type="password" name="password" id="password-input" oninput="ResetFieldAttrs(this)"><br>
<div id="buttonContainer">
<input type="submit" value="Submit">
</div>
</form>
</body>
</html>Editor is loading...