JavaScript Form Validation Doesn't Work In Netscape

A

AnnMarie

My JavaScript Form Validation doesn't work at all in Netscape, but it
works fine in IE.

I made some of the suggested changes which enabled it to work in IE.
I couldn't make all the changes because then it didn't work in IE.

How can I enable this javascipt form validation to work in Netscape?
When I use netscape, none of the alert boxes appear. It submits the
form without validating anything.

In IE, I get all the alert boxes and everything is validated.

Thanks.

The relevant code is:

<script language="JavaScript" type="text/javascript">
<!--
function validate(theForm)
{
var validity = true; // assume valid
// If user doesn't enter required name, alert them
if(frmComments.name.value == '' && validity == true)
{
alert('Your full name is required.\nPlease enter your full
name!');
validity = false;
frmComments.name.focus();
return false;
}
// If user doesn't enter required company, alert them
if(frmComments.company.value == '' && validity == true)
{
alert('Your company name is required.\n' +
'Please enter the name of your company!');
validity = false;
frmComments.company.focus();
return false;
}
// If user doesn't enter the correct email format alert them
// Email is not required
var pattern1 = /^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,4})+$/;
if (!pattern1.test(frmComments.email.value) && validity == true)
{
alert('Invalid E-mail Address!\n' +
'Please re-enter.')
frmComments.email.focus();
validity = false;
return false;
}
// If user doesn't enter the correct zip code format alert them
// Zip Code is not required
if(!frmComments.zip.value == '' )
{
var pattern2 = /^\d{5}$/ ;
if(!pattern2.test(frmComments.zip.value))
{
if(!pattern2.test(frmComments.zip.value) && validity ==
true)
{
alert('Invalid Zip Code!\nMust be in form 12345.\n' +
'Please re-enter.');       
frmComments.zip.focus();
validity = false;
return false;
}
}
}
// If user doesn't enter the correct phone number format alert
them
// Phone Number is not required
if(!frmComments.phone.value == '')
{
var pattern3 = /\d{3}\-\d{3}\-\d{4}/;
if(!pattern3.test(frmComments.phone.value))
{
if(!pattern3.test(frmComments.phone.value)&& validity ==
true)
{
alert('Invalid Phone Number!\nMust be in form
555-555-5555.\n' +
'Please re-enter.');       
frmComments.phone.focus();
validity = false;
return false;
}
}
// If data entered is valid, confirm submission
if(validity == true)
return formSubmit();
}

// Confirm submission
function formSubmit()
{
return ( confirm('Are you sure you want to submit?'));
frmComments.name.focus();
}

// Confirm clearing of fields
function formReset()
{
return ( confirm( "Are you sure you want to reset?" ) )
frmComments.name.focus();
}
// -->
</script>

<form id="frmComments"
action="http://matrix.csis.pace.edu/~f03-it604-s03/cgi-bin/comments.pl"
method="post" onSubmit="return validate(this);" onReset="return
formReset(this)">

<input type="submit" align="right" value="Submit" name="submit"
onchange="frmComments.name.focus();"
onblur="frmComments.name.focus();">
<input type="reset" align="right" value="Clear" name="reset">

The link to this page is:
http://matrix.csis.pace.edu/~f03-it604-s03/project/comments.html
 
J

Janwillem Borleffs

AnnMarie said:
How can I enable this javascipt form validation to work in Netscape?
When I use netscape, none of the alert boxes appear. It submits the
form without validating anything.

In IE, I get all the alert boxes and everything is validated.

IE will accept formName.property, while Netscape expects
document.formName.property.
The relevant code is: .....
function validate(theForm)
{
var validity = true; // assume valid
// If user doesn't enter required name, alert them
if(frmComments.name.value == '' && validity == true)
{

Replace frmComments with theForm, e.g.:
if (theForm.name.value == '')

But since name is a reserved property within the Form object, it's saver to
use the following syntax:
if (theForm.elements['name'].value == '')


JW
 
L

Lasse Reichstein Nielsen

Janwillem Borleffs said:
IE will accept formName.property, while Netscape expects
document.formName.property.

And the W3C DOM specification expects
document.forms.formName
or
document.forms['formName']
I prefer the second. It works, even if the formName contains special
characters.

/L
 
A

AnnMarie Caruso

Thanks for your help. I made the suggested changes and it now also
works in Netscape. I also had to change the form attribute in the form
tag from id to name. But, name doesn't validate with W3C validator and
validation is a requirement for my project.

How can I make an html page with a form validate and work in IE and
netscape?

Thanks.
 
L

Lasse Reichstein Nielsen

AnnMarie Caruso said:
Thanks for your help. I made the suggested changes and it now also
works in Netscape.

Which Netscape? I guess Netscape 4, since Netscape 6+ will definitly
work with id.
I also had to change the form attribute in the form
tag from id to name.

The id attribute is the recommended one.
But, name doesn't validate with W3C validator and
validation is a requirement for my project.

Then you have to change to a DOCTYPE that accepts both, e.g., HTML
4.01 Transitional. Then add both "id" and "name" attributes to the
form tag, with identical values.

/L
 
A

AnnMarie Caruso

Thanks again. It worked. I am using Netscape 7.02. I changed the
DOCTYPE from 4.0 to 4.01 and used both id and name and it validates and
works in both netscape and IE.
 
R

Randell D.

Janwillem Borleffs said:
AnnMarie said:
How can I enable this javascipt form validation to work in Netscape?
When I use netscape, none of the alert boxes appear. It submits the
form without validating anything.

In IE, I get all the alert boxes and everything is validated.

IE will accept formName.property, while Netscape expects
document.formName.property.
The relevant code is: ....
function validate(theForm)
{
var validity = true; // assume valid
// If user doesn't enter required name, alert them
if(frmComments.name.value == '' && validity == true)
{

Replace frmComments with theForm, e.g.:
if (theForm.name.value == '')

But since name is a reserved property within the Form object, it's saver to
use the following syntax:
if (theForm.elements['name'].value == '')


JW

I'm a newbie with js but had a look at the original post and wondered if you
folks were refering to the fact that the <FORM> tag did not contain a NAME
attribute... It should, true?

randelld
 
A

AnnMarie Caruso

The form tag should contain the name attriubute. The problem I had was
that it didn't validate with W3C validator. So I changed the DOCTYPE to
4.01 and included the name and id attribute and then it validated. I
hope this helps.
 

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,774
Messages
2,569,599
Members
45,172
Latest member
NFTPRrAgenncy
Top