Skip to content

Commit 05c3890

Browse files
using javascript registration form validation functionality build
1 parent 24aab5f commit 05c3890

File tree

1 file changed

+210
-0
lines changed

1 file changed

+210
-0
lines changed
+210
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,210 @@
1+
/* ========= LOGIN / REGISTRATION FORM CLIENT SIDE VALIDATION ========= */
2+
// !select elements
3+
const form = document.getElementById("input-form");
4+
const fullName = document.getElementById("fullName");
5+
const userName = document.getElementById("username");
6+
const email = document.getElementById("email");
7+
const phoneNumber = document.getElementById("phoneNumber");
8+
const password = document.getElementById("password");
9+
const checkPassword = document.getElementById("checkPassword");
10+
const agreeTAC = document.getElementById("agree-tac");
11+
const submit = document.getElementById("submit");
12+
13+
// !add event listener
14+
form.addEventListener("submit", (e) => {
15+
e.preventDefault();
16+
17+
// check input & observed validation
18+
checkInput();
19+
});
20+
21+
function checkInput() {
22+
// get all value in required field
23+
// use trim() function for remove whitespace
24+
const fullNameValue = fullName.value.trim();
25+
const usernameValue = userName.value.trim().toLowerCase();
26+
const emailValue = email.value.trim();
27+
const phoneNumberValue = phoneNumber.value.trim();
28+
const passwordValue = password.value.trim();
29+
const checkPasswordValue = checkPassword.value.trim();
30+
31+
/* // !print value in console
32+
console.log(fullNameValue);
33+
console.log(usernameValue);
34+
console.log(emailValue);
35+
console.log(phoneNumberValue);
36+
console.log(passwordValue);
37+
console.log(checkPasswordValue); */
38+
39+
// !full name validation check
40+
if (fullNameValue === "") {
41+
// show error message
42+
// add error class
43+
setErrorMessage(fullName, "Full Name field can't be blank. Required this field.");
44+
45+
// focus element
46+
fullName.focus();
47+
} else if (fullNameValue.length < 5 || fullNameValue.length > 50) {
48+
setErrorMessage(fullName, "This field minimum character is 5 and maximum character is 50. Please input at this range.");
49+
50+
// focus element
51+
fullName.focus();
52+
} else {
53+
// add success class
54+
setSuccessMessage(fullName);
55+
}
56+
57+
// !username validation check
58+
if (usernameValue === "") {
59+
// show error message
60+
// add error class
61+
setErrorMessage(userName, "Username field can't be blank. Required this field.");
62+
63+
// focus element
64+
userName.focus();
65+
} else if (usernameValue.length < 5 || usernameValue.length > 30) {
66+
setErrorMessage(userName, "This field minimum character is 5 and maximum character is 30. Please input at this range.");
67+
68+
// focus element
69+
userName.focus();
70+
} else if (!isUserNameValid(usernameValue)) {
71+
setErrorMessage(userName, "Sorry! Your define username is not valid.");
72+
73+
// focus element
74+
userName.focus();
75+
} else {
76+
// add success class
77+
setSuccessMessage(userName);
78+
}
79+
80+
// !email validation check
81+
if (emailValue === "") {
82+
// show error message
83+
// add error class
84+
setErrorMessage(email, "Email field can't be blank. Required this field.");
85+
86+
// focus element
87+
email.focus();
88+
} else if (!isValidateEmail(emailValue)) {
89+
setErrorMessage(email, "Sorry! Your define email is not valid.");
90+
91+
// focus element
92+
email.focus();
93+
} else {
94+
// add success class
95+
setSuccessMessage(email);
96+
}
97+
98+
// !phone validation check
99+
if (phoneNumberValue === "") {
100+
// show error message
101+
// add error class
102+
setErrorMessage(phoneNumber, "Phone Number field can't be blank. Required this field.");
103+
104+
// focus element
105+
phoneNumber.focus();
106+
} else if (phoneNumberValue.length > 11) {
107+
setErrorMessage(phoneNumber, "This field minimum maximum character is 11. Please input at this range.");
108+
109+
// focus element
110+
phoneNumber.focus();
111+
} else {
112+
// add success class
113+
setSuccessMessage(phoneNumber);
114+
}
115+
116+
// !password validation check
117+
if (passwordValue === "") {
118+
// show error message
119+
// add error class
120+
setErrorMessage(password, "Password field can't be blank. Required this field.");
121+
122+
// focus element
123+
password.focus();
124+
} else if (passwordValue.length < 6 || passwordValue.length > 20) {
125+
setErrorMessage(password, "This field minimum character is 6 and maximum character is 20. Please input at this range.");
126+
127+
// focus element
128+
password.focus();
129+
} else {
130+
// add success class
131+
setSuccessMessage(password);
132+
}
133+
134+
// !retype password validation check
135+
if (checkPasswordValue === "") {
136+
// show error message
137+
// add error class
138+
setErrorMessage(checkPassword, "Password field can't be blank. Required this field.");
139+
140+
// focus element
141+
checkPassword.focus();
142+
} else if (checkPasswordValue.length < 6 || checkPasswordValue.length > 20) {
143+
setErrorMessage(checkPassword, "This field minimum character is 6 and maximum character is 20. Please input at this range.");
144+
145+
// focus element
146+
checkPassword.focus();
147+
} else if (passwordValue !== checkPasswordValue) {
148+
setErrorMessage(checkPassword, "Sorry! Your define password and Retype password not match. Please input correct password.");
149+
150+
// focus element
151+
checkPassword.focus();
152+
} else {
153+
// add success class
154+
setSuccessMessage(checkPassword);
155+
}
156+
157+
// !checked TAC
158+
if (!agreeTAC.checked === true) {
159+
submit.className = "submit disabled";
160+
submit.innerText = "Without Agree TAC Submit Disabled";
161+
162+
// disabled form submit
163+
$(":input[type=submit]").prop("disabled", true);
164+
} else {
165+
submit.className = "submit";
166+
submit.innerText = "Submit Now";
167+
}
168+
}
169+
170+
// !input error message show function
171+
function setErrorMessage(input, message) {
172+
// select input field parentELement
173+
const formControl = input.parentElement; // parentELement = .form-control
174+
const small = formControl.querySelector("small");
175+
176+
// add error message inside small
177+
small.innerText = message;
178+
179+
// add error class
180+
formControl.className = "form-control error";
181+
}
182+
183+
// !input success message show function
184+
function setSuccessMessage(input) {
185+
// select input field parentELement
186+
const formControl = input.parentElement; // parentELement = .form-control
187+
188+
// add success class
189+
formControl.className = "form-control success";
190+
}
191+
192+
// !proper username validation check
193+
function isUserNameValid(username) {
194+
/*
195+
Usernames can only have:
196+
- Lowercase Letters (a-z)
197+
- Numbers (0-9)
198+
- Dots (.)
199+
- Underscores (_)
200+
*/
201+
const res = /^[a-z0-9_\.]+$/.exec(username);
202+
const valid = !!res;
203+
return valid;
204+
}
205+
206+
// !proper email validation check
207+
function isValidateEmail(email) {
208+
const re = /^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;
209+
return re.test(email);
210+
}

0 commit comments

Comments
 (0)