Forum Moderators: open
this is the validation function:
<script language="javascript" type="text/javascript">
function formValidator(fr)
{
var check = "";
if (fr.elements['FullName'].value.length<1)
{
check += "Please enter user's full name\n\n";
}
if(fr.elements['email'].value.length<1)
{
check += "Please enter user's email address\n\n";
}
if(fr.elements['username'].value.length<1)
{
check += "Please enter user's username\n\n";
}
if(fr.elements['username'].value.length>12)
{
check += "Username can have maximum 12 characters\n\n";
}
if(fr.elements['password'].value.length<6)
{
check += "Please enter user's password with at least 6 characters\n\n";
}
if(fr.elements['AccessLevel'].value.length<1)
{
check += "Please select user's level of access\n\n";
}
if (! allValidChars(email)) { // check to make sure all characters are valid
check += "Please enter a valid email address\n\n";
}
if (email.indexOf("@") < 1) { // must contain @, and it must not be the first character
check += "Please enter a valid email address\n\n";
} else if (email.lastIndexOf(".") <= email.indexOf("@")) { // last dot must be after the @
check += "Please enter a valid email address\n\n";
} else if (email.indexOf("@") == email.length) { // @ must not be the last character
check += "Please enter a valid email address\n\n";
} else if (email.indexOf("..") >=0) { // two periods in a row is not valid
check += "Please enter a valid email address\n\n";
} else if (email.indexOf(".") == email.length) { // . must not be the last character
check += "Please enter a valid email address\n\n";
}
if (check != "")
{
alert(check);
return false;
}
}
function allValidChars(email) {
var parsed = true;
var validchars = "abcdefghijklmnopqrstuvwxyz0123456789@.-_";
for (var i=0; i < email.length; i++) {
var letter = email.charAt(i).toLowerCase();
if (validchars.indexOf(letter) != -1)
continue;
check += "Please enter a valid email address\n\n";
break;
}
return check;
}
</script>
This bit of code will parse the form fields into an associative array, much as you seem to have been expecting:
var elements = Array();
for (node in fr.childNodes)
{
if ((fr.childNodes[node].name!=undefined)&&(fr.childNodes[node].name.length>0))
{
elements[fr.childNodes[node].name]=fr.childNodes[node].value;
}
} From there on, you can use elements['fieldname'] to access the values, e.g.:
if(elements['email'].length<1)
{
check += "Please enter user's email address\n\n";
}
var email = elements['email'];
if (! allValidChars(email)) {
function formValidator(fr)
{
var check = "";
if (fr.elements['FullName'].value.length<1)
{
check += "Please enter user's full name\n\n";
}
if(fr.elements['email'].value.length<1)
{
check += "Please enter user's email address\n\n";
}
if(fr.elements['username'].value.length<1)
{
check += "Please enter user's username\n\n";
}
if(fr.elements['username'].value.length>12)
{
check += "Username can have maximum 12 characters\n\n";
}
if(fr.elements['password'].value.length<6)
{
check += "Please enter user's password with at least 6 characters\n\n";
}
if(fr.elements['AccessLevel'].value.length<1)
{
check += "Please select user's level of access\n\n";
}
var elements = Array();
for (node in fr.childNodes)
{
if ((fr.childNodes[node].name!=undefined)&&(fr.childNodes[node].name.length>0))
{
elements[fr.childNodes[node].name]=fr.childNodes[node].value;
}
}
if(elements['email'].length<1)
{
check += "Please enter user's email address\n\n";
}
var email = elements['email'];
if (! allValidChars(email)) { // check to make sure all characters are valid
check += "Please enter a valid email address\n\n";
}
if (email.indexOf("@") < 1) { // must contain @, and it must not be the first character
check += "Please enter a valid email address\n\n";
} else if (email.lastIndexOf(".") <= email.indexOf("@")) { // last dot must be after the @
check += "Please enter a valid email address\n\n";
} else if (email.indexOf("@") == email.length) { // @ must not be the last character
check += "Please enter a valid email address\n\n";
} else if (email.indexOf("..") >=0) { // two periods in a row is not valid
check += "Please enter a valid email address\n\n";
} else if (email.indexOf(".") == email.length) { // . must not be the last character
check += "Please enter a valid email address\n\n";
}
if (check != "")
{
alert(check);
return false;
}
}
function allValidChars(email) {
var parsed = true;
var validchars = "abcdefghijklmnopqrstuvwxyz0123456789@.-_";
for (var i=0; i < email.length; i++) {
var letter = email.charAt(i).toLowerCase();
if (validchars.indexOf(letter) != -1)
continue;
check += "Please enter a valid email address\n\n";
break;
}
return check;
}
</script>
if (! allValidChars(email)) { // check to make sure all characters are valid
check += "Please enter a valid email address\n\n";
}
change this to
check += allValidChars(email);
and add changes below
function allValidChars(email) {
var parsed = true; \\ this line not required
var check = "";
var validchars = "abcdefghijklmnopqrstuvwxyz0123456789@.-_";
for (var i=0; i < email.length; i++) {
var letter = email.charAt(i).toLowerCase();
if (validchars.indexOf(letter) != -1)
continue;
check += "Please enter a valid email address\n\n";
break;
}
return check;
}
<script language="javascript" type="text/javascript">
function formValidator(fr)
{
var check = "";
if (fr.elements['FullName'].value.length<1)
{
check += "Please enter user's full name\n\n";
}
if(fr.elements['email'].value.length<1)
{
check += "Please enter user's email address\n\n";
}
if(fr.elements['username'].value.length<1)
{
check += "Please enter user's username\n\n";
}
if(fr.elements['username'].value.length>12)
{
check += "Username can have maximum 12 characters\n\n";
}
if(fr.elements['password'].value.length<6)
{
check += "Please enter user's password with at least 6 characters\n\n";
}
if(fr.elements['AccessLevel'].value.length<1)
{
check += "Please select user's level of access\n\n";
}
var elements = Array();
for (node in fr.childNodes)
{
if ((fr.childNodes[node].name!=undefined)&&(fr.childNodes[node].name.length>0))
{
elements[fr.childNodes[node].name]=fr.childNodes[node].value;
}
}
if(elements['email'].length<1)
{
check += "Please enter user's email address\n\n";
}
var email = elements['email'];
/*if (! allValidChars(email)) { // check to make sure all characters are valid
check += "Please enter a valid email address\n\n";
}*/
check += allValidChars(email);
if (email.indexOf("@") < 1) { // must contain @, and it must not be the first character
check += "Please enter a valid email address\n\n";
} else if (email.lastIndexOf(".") <= email.indexOf("@")) { // last dot must be after the @
check += "Please enter a valid email address\n\n";
} else if (email.indexOf("@") == email.length) { // @ must not be the last character
check += "Please enter a valid email address\n\n";
} else if (email.indexOf("..") >=0) { // two periods in a row is not valid
check += "Please enter a valid email address\n\n";
} else if (email.indexOf(".") == email.length) { // . must not be the last character
check += "Please enter a valid email address\n\n";
}
if (check != "")
{
alert(check);
return false;
}
}
function allValidChars(email) {
var check = "";
var validchars = "abcdefghijklmnopqrstuvwxyz0123456789@.-_";
for (var i=0; i < email.length; i++) {
var letter = email.charAt(i).toLowerCase();
if (validchars.indexOf(letter) != -1)
continue;
check += "Please enter a valid email address\n\n";
break;
}
return check;
}
</script>
follow these instruction EXCEPT disable script debugger should NOT be ticked, display a notification about every script error should be ticked
You should then get more detailed error message.