I wrote a form validation code in jquery having following fields and their conditions
1.Name-Min 3 characters,max 25 chars and must follow the pattern specified in code
2.Address- max 250 chars and follow specific pattern
3.State-must be selected
4.Country-must be selected
5.Phone number-must be 10 chars and only numerical input is allowed
6.Email-must follow the pattern of entering email
NOTE: ALL FIELDS ARE REQUIRED
HTML file (named as "htmlForm.html")
<html>
<head>
<title>Form Validation Using JQuery</title>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u" crossorigin="anonymous">
<link rel="stylesheet" href="./formcss.css">
<link href="https://fonts.googleapis.com/css?family=Bitter|Josefin Sans|Lobster|Exo" rel="stylesheet">
<script src="./jQueryValidation.js " type='text/javascript'></script>
</head>
<body>
<div class="container">
<div class="col-lg-3"></div>
<div class="col-lg-4">
<div class="well">
<legend style="align-items: center;font-size:27px;" class="head">User Form</legend>
<form name="userform" id="userform">
<div class="row">
<div class="col-lg-3">
<label> Name:</label>
</div>
<div class="col-lg-4">
<input id="txtName" type="text" minlength="3" maxlength="25" required/>
</div>
<div class="col-lg-5">
<a style="text-decoration:none;" id="nameError"></a>
</div>
</div>
<div class="row">
<div class="col-lg-3">
<label>Address:</label>
</div>
<div class="col-lg-4">
<textarea id="txtareaAddress" required /></textarea>
</div>
<div class="col-lg-55">
<a style="text-decoration:none;" id="addressError"></a>
</div>
</div>
<div class="row">
<div class="col-lg-3">
<label> State:</label>
</div>
<div class="col-lg-4">
<select id="ddlState" class="ddlState" required>
<option value=""></option>
<option value="AP">Andhra Pradesh</option>
<option value="KN">Karnataka</option>
<option value="KE">Kerala</option>
<option value="TN">Tamilnadu</option>
</select>
</div>
<div class="col-lg-5">
<a style="text-decoration:none;" id="stateError"></a>
</div>
</div>
<div class="row">
<div class="col-lg-3">
<label>Country:</label>
</div>
<div class="col-lg-4">
<select id="ddlCountry" class="ddlCountry" required>
<option value=""></option>
<option value="BA">Bangladesh</option>
<option value="IN">India</option>
<option value="PA">Pakistan</option>
<option value="SR">Sri lanka</option>
</select>
</div>
<div class="col-lg-5">
<a style="text-decoration:none;" id="countryError"></a>
</div>
</div>
<div class="row">
<div class="col-lg-3">
<label>Phone:</label>
</div>
<div class="col-lg-4">
<input type="tel" id="txtPhone" maxlength="10" required>
</div>
<div class="col-lg-5">
<a style="text-decoration:none;" id="phoneError"></a>
</div>
</div>
<div class="row">
<div class="col-lg-3">
<label>Email:</label>
</div>
<div class="col-lg-4">
<input type="email" class="txtEmail" id="txtEmail" required>
</div>
<div class="col-lg-5">
<a style="text-decoration:none;" id="emailError"></a>
</div>
</div>
<div class="row">
<div class="col-lg-3">
<label></label>
</div>
<div class="col-lg-6">
<input type="submit" id="btnSubmit" class="btn btn-sm btn-success" value="Submit">
<input type="submit " id="btnReset " class="btn btn-sm btn-danger " value="Reset " onclick="history.go(0) ">
</div>
<div class="col-lg-3 ">
</div>
</div>
</form>
</div>
</div>
<div class="col-lg-3 "></div>
</div>
</body>
</html>
JQUERY Validation form (named as "jQueryValidation.js" )
$(document).ready(function() {
$("#btnSubmit").click(function() {
var name = $("#txtName").val();
var patternName = /^([a-zA-Z _-]+)$/.test(name);
alert("name:" + patternName);
if (name.length == 0) {
$("#nameError").html("Name is required");
$("#txtName").css("border-color", "red");
$("#txtName").css("border-width", "1.5px");
$("#nameError").css("font-size", "12px");
} else if (name.length < 3) {
$("#nameError").html("<p>Name must be within 3 - 25 characters</p>");
$("#txtName").css("border-color", "red");
$("#txtName").css("border-width", "1.5px");
$("#nameError").css("font-size", "12px");
} else if (name.length > 25) {
$("#nameError").html("<p>Name must be within 3 - 25 characters</p>");
$("#txtName").css("border-color", "red");
$("#txtName").css("border-width", "1.5px");
$("#nameError").css("font-size", "12px");
} else if (patternName === false) {
$("#nameError").html("<p>Error in name format</p>");
$("#txtName").css("border-color", "red");
$("#txtName").css("border-width", "1.5px");
$("#nameError").css("font-size", "12px");
} else {
$("#nameError").html("");
$("#txtName").css("border-width", "0px");
}
var address = $("#txtareaAddress").val();
var patternAddress = /^([a-zA-Z0-9]+)$/.test(address);
alert("address:" + patternAddress);
if (address.length == 0) {
$("#addressError").html("<p>Address is required</p>");
$("#txtareaAddress").css("border-color", "red");
$("#txtareaAddress").css("border-width", "1.5px");
$("#addressError").css("font-size", "12px");
} else if (address.length > 250) {
$("#addressError").html("<p>Address must be within 250 characters</p>");
$("#txtareaAddress").css("border-color", "red");
$("#txtareaAddress").css("border-width", "1.5px");
$("#addressError").css("font-size", "12px");
} else if (patternAddress === false) {
$("#addressError").html("<p>Error in address format</p>");
$("#txtareaAddress").css("border-color", "red");
$("#txtareaAddress").css("border-width", "1.5px");
$("#addressError").css("font-size", "12px");
} else {
$("#addressError").html("");
$("#txtareaAddress").css("border-width", "0px");
}
var state = $("#ddlState").val();
if (state === "") {
$("#stateError").html("<p>State is required</p>");
$("#ddlState").css("border-color", "red");
$("#ddlState").css("border-width", "1.5px");
$("#stateError").css("font-size", "12px");
} else {
$("#stateError").html("");
$("#ddlState").css("border-width", "0px");
}
var country = $("#ddlCountry").val();
if (country === "") {
$("#countryError").html("<p>Country is required</p>");
$("#ddlCountry").css("border-color", "red");
$("#ddlCountry").css("border-width", "1.5px");
$("#countryError").css("font-size", "12px");
} else {
$("#countryError").html("");
$("#ddlCountry").css("border-width", "0px");
}
var phone = $("#txtPhone").val();
var patternPhone = (/^([0-9]+)$/.test(phone));
alert("phone:" + patternPhone);
if (phone.length == 0) {
$("#phoneError").html("<p>Phone number is required</p>");
$("#phoneError").css("font-size", "12px");
$("#txtPhone").css("border-color", "red");
$("#txtPhone").css("border-width", "1.5px");
} else if (phone.length > 10) {
$("#phoneError").html("<p>Phone number must be 10 characters</p>");
$("#phoneError").css("border-color", "red");
$("#txtPhone").val() = "";
$("#txtPhone").css("border-width", "1.5px");
$("#phoneError").css("font-size", "12px");
} else if (phone.length < 10) {
$("#phoneError").html("<p>phone number must be 10 characters</p>");
$("#phoneError").css("border-color", "red");
$("#txtPhone").val() = "";
$("#txtPhone").css("border-width", "1.5px");
$("#phoneError").css("font-size", "12px");
} else if (patternPhone === false) {
$("#phoneError").html("<p>Error in phone format</p>");
$("#phoneError").css("border-color", "red");
$("#txtPhone").css("border-width", "1.5px");
$("#txtPhone").val().reset;
$("#phoneError").css("font-size", "12px");
} else {
$("#phoneError").html("");
$("#txtPhone").css("border-width", "0px");
}
var email = $("#txtEmail").val();
var patternEmail = (/^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/.test(email));
alert("email:" + patternEmail);
if (email.length == 0) {
$("#emailError").html("<p>Email is required</p>");
$("#emailError").css("font-size", "12px");
$("#txtEmail").css("border-color", "red");
$("#txtEmail").css("border-width", "1.5px");
} else if (patternEmail == false) {
$("#emailError").html("<p>Error in email format</p>");
$("#emailError").css("font-size", "12px");
$("#txtEmail").css("border-color", "red");
$("#txtEmail").css("border-width", "1.5px");
} else {
$("#emailError").html("");
$("#txtEmail").css("border-width", "0px");
}
});
});
CSS file (named as "formcss.css")
.well {
width: 560px;
align-content: center;
align-items: center;
padding: 70px 10px;
margin-top: 10px;
background-color: rgb(104, 212, 185) !important;
border-radius: 30px;
}
body {
font-family: 'Bitter', serif;
background-image: url(img.jpg);
}
label {
width: 60px;
margin-left: 60px;
}
input,
label,
textarea {
border: 10px 0px;
margin-bottom: 10px;
}
Problem : The form works well for the most part . When debugging , I used to give various test cases. Mostly all cases were passed.
But when I entered all fields correctly apart from email and while I try to submit ,it shows error in email field.
I corrected the email field's entry and changed the phone number field as wrong input. This should not submit the form because phone number is not a valid input.Unfortunately, the form gets submitted .
Any alternative solution or correction in my code are welcomed!