Very Strange - Why?

Discussion in 'JavaScript' started by oo7ml, Feb 4, 2008.

  1. #1
    Hi, i have a contact form on my site:

    Name:
    Email:
    Message:

    The validation works perfect on all 3 fields in IE, but only the validation on the name field works in FF...

    Why would this be?


    JS code:

    <SCRIPT LANGUAGE="JavaScript">
    function textCounter(field, countfield, maxlimit) {
    if (field.value.length > maxlimit) // if too long...trim it!
    field.value = field.value.substring(0, maxlimit);
    // otherwise, update 'characters left' counter
    else countfield.value = maxlimit - field.value.length;
    }
    
    
    function validate_name(field,alerttxt)
    	{
    		with (field)
    			{
    				numofchar=value.length;
    				if (numofchar<1) 
    					  {alert(alerttxt);return false}
    				else {return true}
    			}
    	}
    
    	
    function validate_email(field,alerttxt)
    	{
    		with (field)
    			{
    				if (/^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/.test(contact.email.value))
    					{return (true);}
    				else {alert(alerttxt);return false};
    
    			}
    	}
    
    function validate_message(field,alerttxt)
    	{
    		with (field)
    			{
    				numofchar=value.length;
    				if (numofchar<1) 
    					  {alert(alerttxt);return false}
    				else {return true}
    			}
    	}
    	
    
    
    //Function called from Form
    function validate_form(thisform)
    {
    	with (thisform)
    	{
    		 if (validate_name(name,"Please enter your name")==false)
    		  {name.focus();return false}
    		 if (validate_email(email,"Please enter a valid email address")==false)
    		  {email.focus();return false}
    		 if (validate_message(message,"Please enter your message")==false)
    		  {message.focus();return false}
    		  		
    	}
    }
    </script>
    Code (markup):


    Form code:

    <form name="contact" id="form" action="contact.processor.php" onSubmit="return validate_form(this);" enctype="multipart/form-data" method="post"> 
              
                <div class="form_heading">Name:</div>
                <div><input type="text" class="form" name="name" size="34" maxlength="30" tabindex="1" /></div>
    			
                <div class="form_heading">Email:</div>
    			<div><input type="text" class="form" name="email" size="34" maxlength="49" tabindex="2" /></div>
    			
                <div class="form_heading">Message:</div>
    			<div><textarea tabindex="3" cols="35" rows="9" name="message" class="form" wrap="physical" onKeyDown="textCounter(this.form.message,this.form.remLen,1000);"	onKeyUp="textCounter(this.form.message,this.form.remLen,1000); "onFocus="this.value=''; this.onfocus=null;"></textarea></div> 
                    
                <div class="form1"><input type="text" name="remLen" size="3" maxlength="4" value="1000" class="form2" /> characters remaining</div>
    				    
                <div style="padding:10px 0px 0px 12px"><input name="submit" tabindex="4" type="submit" id="submit" value="Send" /> <input type="reset" tabindex="5" name="Reset" value="Reset" /></div>
    			  
    			</form>
    HTML:
    I don't know if this makes any difference but my page is strict xhtml, thanks in advance
     
    oo7ml, Feb 4, 2008 IP
  2. ToddMicheau

    ToddMicheau Active Member

    Messages:
    183
    Likes Received:
    11
    Best Answers:
    0
    Trophy Points:
    58
    #2
    In FF if you click Tools > Error Console you can get a detailed report about what's wrong, the error your getting is:

    
    Warning: Element referenced by ID/NAME in the global scope. Use W3C standard document.getElementById() instead.
    Source File: file:///C:/noName.html
    Line: 20
    
    Code (markup):
    This can be solved by updating:

    
    if (/^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/.test(contact.email.value))
    
    Code (markup):
    To this:

    
    if (/^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/.test(document.getElementsByName('email')[0].value))
    
    Code (markup):
    This will make it both FF and IE compatible.
     
    ToddMicheau, Feb 4, 2008 IP
  3. oo7ml

    oo7ml Well-Known Member

    Messages:
    656
    Likes Received:
    2
    Best Answers:
    0
    Trophy Points:
    105
    #3
    Cool, thanks a million
     
    oo7ml, Feb 4, 2008 IP