Form validation script works in IE but not Mozilla

W

webbedfeet

Hi
I hope someone can help me. I have a client side form validation script
which works perfectly in IE but clicking "Submit" in Mozilla does
nothing - the form won't submit.
Is there something I can use that will work for both browsers, or is
there something wrong with my code? I seem to think that the problem
lies with the "onclick" area of the form.
This is my code, such as it is...

<SCRIPT LANGUAGE="JavaScript">
function ValidateEntries() {

if (MyForm.InputName.value == "") {
alert ("\nPlease enter your first name.")
return false;
}

if (MyForm.InputSurname.value == "") {
alert ("\nPlease enter your Surname.")
return false;
}

if ((MyForm.InputEmail.value == "") ||
(MyForm.InputEmail.value.indexOf('@') == -1) ||
(MyForm.InputEmail.value.indexOf('.') == -1)) {
alert ("\nPlease enter your Email Address.")
return false;
}

if (MyForm.InputAddress.value == "") {
alert ("\nPlease enter your Address.")
return false;
}

if (MyForm.InputPostalcode.value == "") {
alert ("\nPlease enter your Postalcode.")
return false;
}

if (MyForm.InputTelephoneNumber.value == "") {
alert ("\nPlease enter your Telephone Number.")
return false;
}

if (MyForm.InputComments.value == "") {
alert ("\nPlease type your Comments.")
return false;
}
else return document.MyForm.submit();
}
</script>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">

<html>
<head>
<title>Untitled</title>
<meta http-equiv="Content-Type" content="text/html;
charset=iso-8859-1"></head>

<body bgcolor="#CCCCCC" leftmargin="5" topmargin="0">
<Form name="MyForm" action="sendmail.asp" method="post">

<table width="534" border="0" cellpadding="0" cellspacing="0">
<tr>
<td valign="top"><font size="2" face="Arial, Helvetica,
sans-serif">Name
: </font></td>
<td valign="top"><input type="text" name="InputName"></td>
</tr>
<tr>
<td valign="top"><font size="2" face="Arial, Helvetica,
sans-serif">Surname
: </font></td>
<td valign="top"><input type="text" name="InputSurname"></td>
</tr>
<tr>
<td valign="top"><font size="2" face="Arial, Helvetica,
sans-serif">e-mail
Address: </font></td>
<td valign="top"><input type="text" name="InputEmail"></td>
</tr>
<tr>
<td valign="top"><font size="2" face="Arial, Helvetica,
sans-serif">Physical
Address : </font></td>
<td valign="top"><textarea name="InputAddress" rows="5"
cols="30"></textarea></td>
</tr>
<tr>
<td valign="top"><font size="2" face="Arial, Helvetica,
sans-serif">Postal
code : </font></td>
<td valign="top"><input type="text" name="InputPostalcode"></td>
</tr>
<tr>
<td valign="top"><font size="2" face="Arial, Helvetica,
sans-serif">Telephone
Number : </font></td>
<td valign="top"><input type="text"
name="InputTelephoneNumber"></td>
</tr>
<tr>
<td valign="top"><font size="2" face="Arial, Helvetica,
sans-serif">Message
: </font></td>
<td valign="top"><textarea name="InputComments" rows="5"
cols="30"></textarea></td>
</tr>
<tr>
<td colspan="2" valign="top"> <input type="button" value="Submit"
onclick="ValidateEntries()">
</td>
</tr>
</table>
</Form>
</body>

If anyone could help me, I would seriously reconsider dashing my
forehead against the desk
</thanks>
 
L

Lasse Reichstein Nielsen

I have a client side form validation script which works perfectly in
IE but clicking "Submit" in Mozilla does nothing - the form won't
submit.

Then you are doing something wrong. It should submit, just without
the validation, otherwise it won't work if Javascript is turned off.
Is there something I can use that will work for both browsers, or is
there something wrong with my code?

It's your code.
<SCRIPT LANGUAGE="JavaScript">

Should be
function ValidateEntries() {

if (MyForm.InputName.value == "") {

You have not declared a variable called MyForm. You assume that your
browser will create a global variable for your named form. Not all
browsers do that (IE does, Mozilla doesn't).

When referring to a form called "MyForm", always use:
document.forms['MyForm']
To save typing, you can assign the form reference to a variable:

var myForm = document.forms['MyForm'];

Then do
if (myForm.elements['InputName'].value == "") {

Ditto for the remaining tests.
(You could collect all the errors in one go, instead of only
showing the first one. That would speed up the user)

....
else return document.MyForm.submit();

There should be no need for this, just return true, if you
make your page to work without javascript enabled.
}
</script>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">

ICK. There should not be anything before the DOCTYPE declaration
in an HTML page. In particular, script elements are only valid
inside the HEAD and BODY elements. Please make your HTML validate!
<Form name="MyForm" action="sendmail.asp" method="post"> ....
<input type="button" value="Submit" onclick="ValidateEntries()">

This only works if Javascript is enabled. On the other hand, pressing
return in one of the text fields might submit the form without any
validation. A better approach is:
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,981
Messages
2,570,187
Members
46,730
Latest member
AudryNolan

Latest Threads

Top