communi_catt 0 Newbie Poster

Hi All

I'm using Dreamweaver's (MX) form validation system for a form and noticed something odd about the last "required" field. The validation system works fine on all other "required" fields, but if there is any copy in the last "required" field, the form is sent to the database and redirects to the "Thanks" page.

In other words, if the fields are left blank, the correct "Missing Fields" box pops up. Clicking on OK goes through all the missing fields and defaults back to the form page.

However, if there is any text in the last "required" field (sales contact in the code below), the "Missing Fields" box pops up - but once "Ok" is clicked - the form is sent off anyway, without the opportunity to fill in the missing information.

Here is the script at the top of the page:

<script language="JavaScript" type="text/JavaScript">
<!--
function MM_findObj(n, d) { //v4.01
  var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
    d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
  if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
  for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
  if(!x && d.getElementById) x=d.getElementById(n); return x;
}

function MM_validateForm() { //v4.0
  var i,p,q,nm,test,num,min,max,errors='',args=MM_validateForm.arguments;
  for (i=0; i<(args.length-2); i+=3) { test=args[i+2]; val=MM_findObj(args[i]);
    if (val) { nm=val.id; if ((val=val.value)!="") {
      if (test.indexOf('isEmail')!=-1) { p=val.indexOf('@');
        if (p<1 || p==(val.length-1)) errors+='- '+nm+' must contain an e-mail address.\n';
      } else if (test!='R') { num = parseFloat(val);
        if (isNaN(val)) errors+='- '+nm+' must contain a number.\n';
        if (test.indexOf('inRange') != -1) { p=test.indexOf(':');
          min=test.substring(8,p); max=test.substring(p+1);
          if (num<min || max<num) errors+='- '+nm+' must contain a number between '+min+' and '+max+'.\n';
    } } } else if (test.charAt(0) == 'R') errors += '- '+nm+' - All fields marked with a * are required.\n'; }
  } if (errors) alert('Missing fields:\n'+errors);
  document.MM_returnValue = (errors == '');
}
//-->
</script>

Here is the script on the submit button:

<input name="Submit" type="submit" onClick="MM_validateForm('First name','','R');MM_validateForm('Last name','','R');MM_validateForm('e-Mail','','R');MM_validateForm('Company','','R');MM_validateForm('City','','R');MM_validateForm('sales contact','','R');return document.MM_returnValue" value="Submit">

Assistance much appreciated.

Be a part of the DaniWeb community

We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts meeting, networking, learning, and sharing knowledge.