I have a form validation script that runs perfect. Now i want to add one more field to the form and want to make some fields “required” but i dont know how to do this. Please help me.
I am also attaching the relevant files. Thanks in advance.
Fields to add:
- Social Security Number (Same as Home Telephone but allows 3 digits in 1st field, 2 in 2nd and 4in 3rd field (123)-(12)-(1234))
Fields to make “required” :
Email
Social Security Number
First Name
Last Name
The Script
var phoneRegEx = /^(?:(?:\\(?(?:(?:[246-8](?:(?:[02-8][0-9])|(?:1[02-9])))|(?:3(?:(?:[02-68][0-9])|(?:1[02-9])))|(?:5(?:(?:[02-46-8][0-9])|(?:5[0-46-9])|(?:1[02-9])))|(?:9(?:(?:[02-578][0-9])|(?:1[02-9]))))\\)?)(?:[\\- ]?)(?:(?:700(?:[\\- ]?)(?:(?:[0-35-9][0-9]{3})|(?:4[02-9][0-9]{2})|(?:41[0-35-9][0-9])|(?:414[02-9])))|(?:(?:(?:[23468][02-9][0-9])|(?:[2-9]1[02-9])|(?:5(?:(?:5[0-46-9])|(?:[02346-9][0-9])|(?:1[02-9])))|(?:7(?:(?:[2-9][0-9])|(?:0[1-9])|(?:1[02-9])))|(?:9(?:(?:[0234689][0-9])|(?:1[02-9])|(?:5[1-7])|(?:7[0-5789]))))(?:[\\- ]?)(?:[0-9]{4}))))$/;
var error // used to store RowNames for errored elements.
var isOptRequired = false;
function ValidateQuoteRequest(frm)
{
if(isBrowserCompatible())
{
error = new Array();
CheckDropDown('state', 'row_state', frm);
CheckDropDown('Month', 'row_date', frm);
CheckDropDown('Day', 'row_date', frm);
CheckDropDown('Year', 'row_date', frm);
CheckDate('Month', 'Day','Year', 'row_date', frm, 'True');
CheckDropDown('Sex', 'row_sex', frm);
CheckDropDown('Height_Feet', 'row_Height', frm);
CheckDropDown('Height_Inches', 'row_Height', frm);
CheckIntegerField('Weight', 'row_Height', frm, 'True');
CheckDropDown('Tobacco', 'row_tobacco', frm);
CheckFrequency('Frequency', 'row_tobaccotype', frm, 'True');
CheckPhone('workphone,homephone', 'row_workphone,row_homephone', frm, 'False');
CheckEmail('email', 'row_email', frm, 'False');
if (error.length > 0)
{
//turn on error header and scroll page to error header
document.getElementById("contentError").style.display = "";
location = '#contentError';
return false;
}
else
{
document.getElementById("contentError").style.display = "none";
return true;
}
}
else //browser not compatible
{
return true;
}
}
function ValidateRequestApplication(frm)
{
if(isBrowserCompatible())
{
error = new Array();
CheckTextField('firstname', 'row_firstname', frm,);
CheckTextField('lastname', 'row_lastname', frm);
CheckTextField('address', 'row_address', frm);
CheckTextField('city', 'row_city', frm);
CheckTextField('state', 'row_state', frm);
CheckZip('zip', 'row_state', frm, 'True');
CheckPhone('work_phone_number_,home_phone_number_,cell_phone_number_', 'row_work_phone_number_,row_home_phone_number_,row_cell_phone_number_', frm, 'True');
CheckNumericField('work_phone_number_4', 'row_work_phone_number_', frm, 'False');
CheckEmail('email', 'row_email', frm, 'True');
CheckDropDown('premium_quoted', 'row_premium_quoted', frm);
CheckRadioButton('Residency', 'row_Residency', frm);
CheckRadioButton('spouse_policy', 'row_spouse_policy', frm);
CheckSpouseTextField('spouse_first_name', 'row_spouse_first_name', frm);
CheckSpouseTextField('spouse_last_name', 'row_spouse_last_name', frm);
CheckDropDown('AgentID', 'row_AgentID', frm);
if (error.length > 0)
{
//turn on error header and scroll page to error header
document.getElementById("contentError").style.display = "";
location = '#contentError';
return false;
}
else
{
document.getElementById("contentError").style.display = "none";
return true;
}
}
else //browser not compatible
{
return true;
}
}
function ValidateRBCRequestApplication(frm)
{
if(isBrowserCompatible())
{
error = new Array();
CheckTextField('firstname', 'row_firstname', frm);
CheckTextField('lastname', 'row_lastname', frm);
CheckTextField('address', 'row_address', frm);
CheckTextField('city', 'row_city', frm);
CheckTextField('state', 'row_state', frm);
CheckZip('zip', 'row_state', frm, 'True');
CheckPhone('work_phone_number_', 'row_work_phone_number_', frm, 'True');
CheckEmail('email', 'row_email', frm, 'True');
if (error.length > 0)
{
//turn on error header and scroll page to error header
document.getElementById("contentError").style.display = "";
location = '#contentError';
return false;
}
else
{
document.getElementById("contentError").style.display = "none";
return true;
}
}
else //browser not compatible
{
return true;
}
}
function ValidateRBCQuoteRequest(frm)
{
if(isBrowserCompatible())
{
error = new Array();
CheckDropDown('state', 'row_state', frm);
CheckDropDown('Sex', 'row_Sex', frm);
CheckDate('Month', 'Day','Year', 'row_date', frm, 'True');
CheckDropDown('Amount', 'row_Amount', frm);
CheckRadioButton('coverageTerm', 'row_coverageTerm', frm);
CheckRadioButton('tobacco', 'row_tobacco', frm);
CheckTextField('firstname', 'row_firstname', frm);
CheckTextField('lastname', 'row_lastname', frm);
CheckPhone('home_phone_number_', 'row_home_phone_number_', frm, 'True');
CheckEmail('email', 'row_email', frm, 'True');
if (error.length > 0)
{
//turn on error header and scroll page to error header
document.getElementById("contentError").style.display = "";
location = '#contentError';
return false;
}
else
{
document.getElementById("contentError").style.display = "none";
return true;
}
}
else //browser not compatible
{
return true;
}
}
function ValidateHealth(frm)
{
if(isBrowserCompatible())
{
error = new Array();
CheckEmail('Email', 'row_Email', frm, 'True');
CheckZip('ZipCode', 'row_ZipCode', frm, 'True');
if (error.length > 0)
{
//turn on error header and scroll page to error header
document.getElementById("contentError").style.display = "";
location = '#contentError';
return false;
}
else
{
document.getElementById("contentError").style.display = "none";
return true;
}
}
else //browser not compatible
{
return true;
}
}
function ValidateHome(frm)
{
if(isBrowserCompatible())
{
error = new Array();
CheckEmail('Email', 'row_Email', frm, 'True');
CheckZip('ZipCode', 'row_ZipCode', frm, 'True');
if (error.length > 0)
{
//turn on error header and scroll page to error header
document.getElementById("contentError").style.display = "";
location = '#contentError';
return false;
}
else
{
document.getElementById("contentError").style.display = "none";
return true;
}
}
else //browser not compatible
{
return true;
}
}
function ValidateLTC(frm)
{
if(isBrowserCompatible())
{
error = new Array();
CheckDropDown('state', 'row_state', frm);
if (error.length > 0)
{
//turn on error header and scroll page to error header
document.getElementById("contentError").style.display = "";
location = '#contentError';
return false;
}
else
{
document.getElementById("contentError").style.display = "none";
return true;
}
}
else //browser not compatible
{
return true;
}
}
function ValidateAuto(frm)
{
if(isBrowserCompatible())
{
error = new Array();
CheckZip('zipcode', 'row_zipcode', frm, 'True');
if (error.length > 0)
{
//turn on error header and scroll page to error header
document.getElementById("contentError").style.display = "";
location = '#contentError';
return false;
}
else
{
document.getElementById("contentError").style.display = "none";
return true;
}
}
else //browser not compatible
{
return true;
}
}
//-------
function CheckAnnualIncome (ElmtName, RowName, frm,isReq)
{
if(!frm.elements[ElmtName + '_decline'].checked)
CheckNumericField (ElmtName,RowName, frm, isReq);
else
removeErrorFormatting(ElmtName, RowName, frm);
}
//-------
function CheckTextField (ElmtName, RowName, frm)
{
if (!frm.elements[ElmtName])
return;
if(trim(frm.elements[ElmtName].value) == '')
ThrowError(ElmtName, RowName, frm);
else
removeErrorFormatting(ElmtName, RowName, frm);
}
//----
function CheckSpouseTextField (ElmtName, RowName, frm)
{
if (!frm.elements[ElmtName])
return;
for(var i=0;i < frm.spouse_policy.length; i++)
{
if(frm.spouse_policy[i].checked && frm.spouse_policy[i].value == 'yes')
{
CheckTextField (ElmtName, RowName, frm);
}else{
removeErrorFormatting(ElmtName, RowName, frm);
}
}
}
//------
function CheckNumericField(ElmtName, RowName, frm, isReq)
{
if (frm.elements[ElmtName].value != '' || isReq.toLowerCase() == 'true')
{
var val = frm.elements[ElmtName].value.replace(/,/g,'');
val = val.replace('$', '');
if(parseFloat(val)!=(val*1) || val == '')
ThrowError(ElmtName, RowName, frm);
else
removeErrorFormatting(ElmtName, RowName, frm);
}
else
{
removeErrorFormatting(ElmtName, RowName, frm);
}
}
function CheckIntegerField(ElmtName, RowName, frm, isReq)
{
if (frm.elements[ElmtName].value != '' || isReq.toLowerCase() == 'true')
{
if(frm.elements[ElmtName].value.indexOf('.') != -1 || (frm.elements[ElmtName].value % 1) != 0 || frm.elements[ElmtName].value == '')
ThrowError(ElmtName, RowName, frm);
else
removeErrorFormatting(ElmtName, RowName, frm);
}
else
{
removeErrorFormatting(ElmtName, RowName, frm);
}
}
//-----
function CheckEmail (ElmtName, RowName, frm, isReq)
{
//add for optimost required field testing.
if(isOptRequired)
isReq = 'true';
var regEx;
regEx = /^[\\w-]+(?:\\.[\\w-]+)*@(?:[\\w-]+\\.)+[a-zA-Z]{2,7}$/;
if(!regEx.test(frm.elements[ElmtName].value) && (frm.elements[ElmtName].value != '' || isReq != 'False'))
ThrowError(ElmtName, RowName, frm);
else
removeErrorFormatting(ElmtName, RowName, frm);
}
//-------
function CheckDate(ElmtMonth, ElmtDay, ElmtYear, RowName, frm, isReq) {
var Day = frm.elements[ElmtDay].options[frm.elements[ElmtDay].selectedIndex].value;
var Month = frm.elements[ElmtMonth].options[frm.elements[ElmtMonth].selectedIndex].value - 1;
var Year = frm.elements[ElmtYear].options[frm.elements[ElmtYear].selectedIndex].value;
var DateObj = new Date(Year,Month,Day);
if ( DateObj.getMonth() != Month) {
ThrowError(RowName, RowName, frm);
} else {
removeErrorFormatting(RowName, RowName, frm);
}
}
//-------
function CheckZip(ElmtName, RowName, frm, isReq)
{
var regEx
regEx = /^\\d{5}$|^\\d{5}-\\d{4}$/;
if(!regEx.test(frm.elements[ElmtName].value) && (frm.elements[ElmtName].value != '' || isReq != 'False'))
ThrowError(ElmtName, RowName, frm);
else
removeErrorFormatting(ElmtName, RowName, frm);
}
//------
function CheckDropDown(ElmtName, RowName, frm)
{
if (!frm.elements[ElmtName])
return;
if(frm.elements[ElmtName].options.selectedIndex == 0)
ThrowError(ElmtName, RowName, frm);
else
removeErrorFormatting(ElmtName, RowName, frm);
}
//-------
function CheckRadioButton(ElmtName, RowName, frm)
{
if (!frm.elements[ElmtName])
return;
var radioChecked = false;
for(var i=0;i < frm.elements[ElmtName].length; i++)
{
if(frm.elements[ElmtName][i].checked)
{
radioChecked = true;
break;
}
}
if(!radioChecked)
ThrowError(ElmtName, RowName, frm);
else
removeErrorFormatting(ElmtName, RowName, frm);
}
//-------
function CheckCheckboxes(ElmtName, RowName, frm)
{
if (!frm.elements[ElmtName])
return;
var checkboxChecked = false;
for(var i=0;i < frm.elements[ElmtName].length; i++)
{
if(frm.elements[ElmtName][i].checked)
{
checkboxChecked = true;
break;
}
}
if(!checkboxChecked)
ThrowError(ElmtName, RowName, frm);
else
removeErrorFormatting(ElmtName, RowName, frm);
}
//-------
function CheckPhone(ElmtNames, RowNames, frm, isReq)
{
//add for optimost required field testing.
if(isOptRequired)
isReq = 'true';
checkPhoneNumbers(ElmtNames, RowNames, frm, isReq)
}
//------
function CheckFrequency(ElmtName, RowName, frm)
{
var Tobacco = new Array(3,4,5,6,7,8);
var ThrowErrorFlag = false;
for(i = 0; i < Tobacco.length; i++)
{
if(Tobacco[i] == frm.elements["Tobacco"].options[frm.elements["Tobacco"].selectedIndex].value && frm.elements["Frequency"].options.selectedIndex == 0)
{
ThrowError("Frequency", RowName, frm);
ThrowErrorFlag = true;
break;
}
}
if(!ThrowErrorFlag)
removeErrorFormatting(ElmtName, RowName, frm);
}
function CheckTextArea(field, maxlen) {
if (field.value.length > maxlen)
{
field.value = field.value.substring(0, maxlen);
alert('Only 1000 characters allowed. Your input has been truncated to 1000 characters');
}
}
//------
function ThrowError(ElmtName, RowName, frm)
{
if(!eval("document.getElementById('" + RowName + "')"))
return;
applyErrorFormatting(ElmtName, RowName,frm)
error[error.length] = RowName;
}
//------
function applyErrorFormatting(fldName, RowName,frm)
{
tableRow = eval("document.getElementById('" + RowName + "')");
tableRow.className = "error2";
}
//-----
function removeErrorFormatting(fldName, RowName,frm)
{
var isSharedRow = CheckForSharedRow(RowName) // call function to handle fields that share the same row
if(isSharedRow)
return true;
tableRow = eval("document.getElementById('" + RowName + "')");
if(tableRow)
tableRow.className = "quoter";
}
function CheckForSharedRow(RowName)
{
for(var i=0;i<error.length;i++)
{
if(error[i] == RowName)
return true;
}
return false;
}
function isBrowserCompatible()
{
if(document.getElementById)
return true;
else
return false;
}
function trim(str)
{
return str.replace(/^\\s*|\\s*$/g,"");
}
//------
function OpenWindow(name,filename,height,width,parameters)
{
var hwin = window.open(filename,name,"height=" + height + ",width=" + width + "," + parameters);
hwin.focus();
}
//-----
function StandardPopup(pagePath)
{
OpenWindow("", pagePath, 450, 300, "");
}
//------
Code for the form:
<form action="#" method="get" onsubmit="return ValidateQuoteRequest(this);" name="FrontPage_Form">
<tr class="quoter" id="row_state">
<td align="right" nowrap=""><a href="javascript:popUp('state')" title="">State</a></td>
<td colspan="2">
<select name="state" size="1" tabindex="12">
<option value="-1">Select state...</option>
<option value="AK">Alaska</option>
</select>
</td>
</tr>
<tr class="quoter" id="row_date">
<td align="right"><a href="javascript:popUp('dob');" title="">Date of Birth</a></td>
<td colspan="2"><select name="Month">
<option value="-1">Month</option>
<option value="01">Jan</option>
</select> <select name="Day">
<option value="-1">Day</option>
<option value="01">01</option>
</select> <select name="Year" size="1">
<option value="-1">Year</option>
<option value="1921">1921</option>
</select>
</td>
</tr>
<tr class="quoter" id="row_sex">
<td align="right"><a href="javascript:popUp('gender')" title="">Gender</a></td>
<td colspan="2"><select name="Sex" size="1">
<option value="-1">Select...</option>
<option value="1">Male</option>
</select>
</td>
</tr>
<tr class="quoter" id="row_Height">
<td align="right">Height</td>
<td nowrap="" colspan="2"><select name="Height_Feet" size="1">
<option value="-1"></option>
</select> ft <select name="Height_Inches" size="1">
<option value="-1"></option>
</select> in Weight <input name="Weight" size="3" maxlength="3" value=""> lbs
</td>
</tr>
<tr class="quoter" id="row_tobacco">
<td align="right"><a href="javascript:popUp('tobacco')" title="">Tobacco/ Nicotine Use</a></td>
<td colspan="2"><select name="Tobacco" onchange="toggleRow(this,'4,5,6,7,8','row_tobaccotype',document.FrontPage_Form.Frequency)">
<option value="-1">Select...</option>
<option value="1">Never used</option>
<option value="7">Current user</option>
</select></td>
</tr>
<tr class="quoter" style="display: none; " id="row_tobaccotype">
<td align="right">Type of Tobacco or Nicotine and frequency of use</td>
<td colspan="2"><select name="Frequency">
<option value="0" selected="">Please select...</option>
<option value="10">Cigarettes, less than 1/2 pack a day</option>
</select></td>
</tr>
<tr class="quoter" id="row_coverage">
<td align="right" class="quoter"><a href="javascript:popUp('calculator','https');" title="">Coverage Amount</a></td>
<td><select name="Amount" size="1">
<option value="750000">$750,000</option>
</select> <a href="javascript:popUp('calculator');" title="" class="nav-sub" ;=""><img src="./Insurance_files/help.gif" width="16" height="17" alt="" border="0" align="bottom"></a></td><td class="quoter"><a href="javascript:popUp('calculator');" title="">How much life<br>insurance do I need?</a></td>
</tr>
<tr class="quoter">
<td align="right"><a href="javascript:popUp('term');" title="">Guaranteed Term</a></td>
<td class="quoter" colspan="2" id="ProductType"><select name="ProductType" size="1">
<option value="8">10 Years</option>
</select></td>
</tr>
<tr class="quoter" id="row_PreClass">
<td align="right"><a href="javascript:popUp('healthclass');" title="">Health Class</a></td>
<td><select name="PreClass" size="1">
<option value="0" selected="">Best Class</option>
<option value="2">Preferred</option>
</select> <a href="javascript:popUp('healthclass');" title=""><img src="./Insurance_files/help.gif" width="16" height="17" alt="" border="0" align="bottom"></a></td>
<td><a href="javascript:popUp('healthclass');" title="">How do I determine<br>my health class?</a><a href="#">*</a></td>
</tr>
<tr class="quoter" id="row_firstname">
<td align="right"> First Name</td>
<td class="quoter" colspan="2"><input name="firstname" size="30" maxlength="50" value=""></td>
</tr>
<tr class="quoter" id="row_lastname">
<td align="right"> Last Name</td>
<td colspan="2"><input name="lastname" size="30" maxlength="50" value=""></td>
</tr>
<tr class="quoter" id="row_workphone">
<td align="right">Social Security Number</td>
<td colspan="2">(<input maxlength="3" name="ssn1" size="3" value="">)-<input maxlength="2" name="ssn2" size="2" value="">-<input name="ssn3" size="4" maxlength="4" value=""></td>
</tr>
<tr class="quoter" id="row_workphone">
<td align="right">Work Phone</td>
<td colspan="2">(<input maxlength="3" name="workphone1" size="3" value="">)-<input maxlength="3" name="workphone2" size="3" value="">-<input name="workphone3" size="4" maxlength="4" value=""></td>
</tr>
<tr class="quoter" id="row_homephone">
<td align="right">Home Phone</td>
<td colspan="2">(<input maxlength="3" name="homephone1" size="3" value="">)-<input maxlength="3" name="homephone2" size="3" value="">-<input name="homephone3" size="4" maxlength="4" value=""></td>
</tr>
<tr class="quoter" id="row_email">
<td align="right"><a href="javascript:popUp('email','https');">E-mail</a></td>
<td colspan="2"><input name="email" size="30" maxlength="80" value=""></td>
</tr>
<tr>
<td colspan="3" align="center" nowrap="">
<input type="image" title="Please click only once." name="Submit" src="./Insurance_files/compare_rates.gif" width="172" height="28" value="Compare Rates Now!" alt="Get Your Life Insurance Quote Now">
</form>