I should really fully test these things before I post them.
Correction to code:
Code:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Test 3 - JavaScript</title>
<script type="text/javascript">
function isBlank(field)
{
// True if val is whitespace only or empty.
var re = /\S+/;
return (field.length==0 || !re.test(field));
}
function checkName(field)
{
/* 5 to 15 alphanumeric characters, inclusive */
var re = /^\w{5,15}$/;
if (!re.test(field))
{
alert("The name field must be between 5 and 15 alphanumeric characters. ");
field.focus();
return false;
}
else return true;
}
function checkPsswd(field)
{
/* 5 to 15 characters, inclusive */
var re_num = /^\w{5,15}$/;
var re_case = /^\w*([a-z]+\w*[A-Z]+|[A-Z]+\w[a-z]+)\w*$/;
if (!re_num.test(field))
{
alert("The password field must be between 5 and 15 alphanumeric characters.");
field.focus();
return false;
}
if (!re_case.test(field))
{
alert("The password field must have at least one lower case letter and at least one uppwe-case letter.");
field.focus();
return false;
}
else return true;
}
function validate(frm)
{
if (isBlank(frm.uname.value))
{
alert("Name required");
frm.uname.focus();
return false;
}
if (isBlank(frm.psswd.value))
{
alert("Password required");
frm.psswd.focus();
return false;
}
if (isBlank(frm.phone.value))
{
alert("Phone required");
frm.phone.focus();
return false;
}
if (isBlank(frm.date.value))
{
alert("Date required");
frm.date.focus();
return false;
}
formatNumber(frm.phone.value);
return (checkName(frm.uname.value) &&
checkPsswd(frm.psswd.value))
}
function formatNumber(field)
{
/* if blank, don't do anything */
if (isBlank(field.value)) return;
/* user must enter 10 digits or a fully formatted number. If already formatted, exit. */
var re_digits = /^\d{10}$/;
var re_formatted = /^\(\d\d\d\) \d\d\d-\d\d\d\d$/;
if (re_formatted.test(field.value)) return;
/* got here, need to format */
// check is 10 digits
if (!re_digits.test(field.value))
{
alert("Phone number must be 10 digits or in the form (123) 555-5555");
return;
}
// okay, got 10 digits - format them to (123) 555-5555
var newNumber = "(" + field.value.substring(0,3) + ") " + field.value.substring(3,6) + "-" + field.value.substring(6,10);
alert(newNumber);
field.value = newNumber;
}
</script>
</head>
<body>
* All fields MUST be completed.
<form name="frm1" method="get" action="" onsubmit="return validate(this);">
<p><strong>Name: </strong>
<input name="uname" type="text" id="uname" maxlength="15" onchange="checkName(this.value);">
(5-15 characters)<br>
<br>
<strong>Password:
<input name="psswd" type="password" id="psswd" maxlength="15" onchange="checkPsswd(this.value);">
<br>
<br>
Phone:
<input type="text" name="phone" size="20" onchange="formatNumber(this);">
</strong>(10 digits)<strong><br>
<br>
Date: <input name="date" id="date" type="text"> <br>
<br>
<input type="submit" name="Submit" value="Submit">
</strong></p>
</form>
<br>
</body>
</html>