|
Any idea why this wouldn't work in explorer but will in firefox. I'm using it to validate my form.
<script language="javascript" type="text/javascript" src="validate.js"></script>
<form name="FormName" method="post" action="index.php" onsubmit="return validate(this);">
// validate.js
function validate(form) {
var valid = true;
var FirstErrorField = '';
var checkboxes = new Array();
var thisbox = '';
for(i in form.elements ) {
//alert( i );
try{
if( (form.elements[i].type == "checkbox") && (checkboxes[form.elements[i].getAttribute("name")] == undefined) ) {
thisbox = form.elements[i].getAttribute("name");
checkboxes[thisbox] = false;
for(j in form.elements) {
if( form.elements[j].type == "checkbox" ) {
if (form.elements[j].getAttribute("name") == thisbox ) {
normalField(form.elements[j].parentNode);
checkboxes[thisbox] = (checkboxes[thisbox] || (form.elements[j].checked));
}
}
}
if ( checkboxes[thisbox] == false ) {
for(j in form.elements) {
if( form.elements[j].type == "checkbox" ) {
if (form.elements[j].getAttribute("name") == thisbox ) {
highlightField(form.elements[j].parentNode);
}
}
}
valid = false;
}
}
else if(form.elements[i].type != "hidden") {
//if(form.elements[i].parentNode.parentNode.parentNode.getElementsByTag Name("div")[1].getElementsByTagName("label")[0].getAttribute("class") == "required") {
if(form.elements[i].getAttribute("class") == "required") {
if(form.elements[i].value == '') {
highlightField(form.elements[i]);
valid = false;
}
else if( form.elements[i].getAttribute("title") == "numeric" ) {
if ( (isNumeric(form.elements[i].value) == false) || ( form.elements[i].value.length < form.elements[i].getAttribute("maxLength") ) ) {
highlightField(form.elements[i]);
valid = false;
}
else {
normalField(form.elements[i]);
}
}
else if( form.elements[i].getAttribute("name") == "EMAIL" ) {
if ( validateAddress(form.elements[i].value) == false ) {
highlightField(form.elements[i]);
valid = false;
}
else {
normalField(form.elements[i]);
}
}
else {
normalField(form.elements[i]);
}
}
}
}
catch( error ) {
}
}
if( valid == false ) {
alert( "Please fill in all required form fields with valid data." );
}
return valid;
}
function highlightField(field) {
field.style.backgroundColor = '#FF6666';
field.style.color = 'white';
}
function normalField(field) {
field.style.backgroundColor = 'window';
field.style.color = 'windowtext';
}
function validateAddress(incoming) {
var emailstring = incoming;
var ampIndex = emailstring.indexOf("@");
var afterAmp = emailstring.substring((ampIndex + 1), emailstring.length);
// find a dot in the portion of the string after the ampersand only
var dotIndex = afterAmp.indexOf(".");
// determine dot position in entire string (not just after amp portion)
dotIndex = dotIndex + ampIndex + 1;
// afterAmp will be portion of string from ampersand to dot
afterAmp = emailstring.substring((ampIndex + 1), dotIndex);
// afterDot will be portion of string from dot to end of string
var afterDot = emailstring.substring((dotIndex + 1), emailstring.length);
var beforeAmp = emailstring.substring(0,(ampIndex));
var email_regex = /^[\w\d\!\#\$\%\&\'\*\+\-\/\=\?\^\_\`\{\|\}\~]+(\.[\w\d\!\#\$\%\&\'\*\+\-\/\=\?\^\_\`\{\|\}\~])*\@(((\w+[\w\d\-]*[\w\d]\.)+(\w+[\w\d\-]*[\w\d]))|((\d{1,3}\.){3}\d{1,3}))$/;
// index of -1 means "not found"
if ((emailstring.indexOf("@") != "-1") &&
(emailstring.length > 5) &&
(afterAmp.length > 0) &&
(beforeAmp.length > 1) &&
(afterDot.length > 1) &&
(email_regex.test(emailstring)) ) {
return true;
} else {
return false;
}
}
function isNumeric(sText) {
var ValidChars = "0123456789.";
var IsNumber=true;
var Char;
for (var i = 0; i < sText.length && IsNumber == true; i++)
{
Char = sText.charAt(i);
if (ValidChars.indexOf(Char) == -1)
{
IsNumber = false;
}
}
return IsNumber;
}
|