Il titolo non č molto esaustivo, mi spiego:

questo js mi controlla i campi di un form:

codice:
<script language="JavaScript" type="text/javascript">
<!--
function controlla_dati(){
  
	var val_nome=document.personale.nome.value;
	var val_cognome=document.personale.cognome.value;
	var val_nato=document.personale.nato.value;
	var val_gg=document.personale.gg.value;
	var val_mm=document.personale.mm.value;
	var val_aa=document.personale.aa.value;
	var val_ind=document.personale.ind.value;
	var val_cap=document.personale.cap.value;
	var val_prov=document.personale.prov.value;
	var val_city=document.personale.city.value;
	var val_email=document.personale.email.value;
	var val_telcasa=document.personale.telcasa.value;
	var val_teluff=document.personale.teluff.value;
	var val_cell=document.personale.cell.value;
	
	if (val_cognome == "") 
	{
	alert('Attenzione inserire il cognome.');
	document.personale.cognome.focus();
	return false;
	}
	
	 if (val_nome == "") 
	{
	alert('Attenzione inserire il nome.');
	document.personale.nome.focus();
	return false;
	}
	
	if (val_nato == "") 
	{
	alert('Attenzione inserire il luogo di nascita.');
	document.personale.nato.focus();
	return false;
	}
	
	if ((val_gg.length < 2) || (val_gg > 31))
	{
	alert('Attenzione giorno di nascita non valido.');
	document.personale.gg.focus();
	return false;
	}
	
	if ((val_mm.length < 2) || (val_mm > 12))
	{
	alert('Attenzione mese di nascita non valido.');
	document.personale.mm.focus();
	return false;
	}
	
	if ((val_aa.length < 4) || (val_aa > <?php echo"$year"; ?>))
	{
	alert('Attenzione anno di nascita non valido.');
	document.personale.aa.focus();
	return false;
	}

	if (val_ind == "") 
	{
	alert('Attenzione inserire indirizzo.');
	document.personale.ind.focus();
	return false;
	}
	
	if (val_cap == "") 
	{
	alert('Attenzione inserire il C.A.P.');
	document.personale.cap.focus();
	return false;
	}
	
	if (val_prov == "") 
	{
	alert('Attenzione specificare la provincia.');
	document.personale.prov.focus();
	return false;
	}
	
	if (val_city == "") 
	{
	alert('Attenzione specificare la cittą.');
	document.personale.city.focus();
	return false;
	}
	// -------- controllo che sia maggiorenne
	var g_n = parseInt(document.personale.gg.value);
	var m_n = parseInt(document.personale.mm.value);
	var a_n = parseInt(document.personale.aa.value);
	var nasc = new Date(a_n, m_n-1, g_n);

	var nasc = new Date(val_aa, val_mm, val_gg);
	var magg = new Date(<?php echo"$year, $month, $day"; ?>);
	magg.setFullYear(magg.getFullYear()-18);
	if (nasc > magg)
	{
	alert('Attenzione non č stato compiuto il 18 anno');
	return false;
	}
	
	// -------- controllo che ci sia almeno un numero di telefono
	if((val_telcasa == "") && (val_teluff == "") && (val_cell == ""))
	{
      alert("Inserire almeno un recapito telefonico");
      document.personale.telcasa.focus();
      return false;
      }
	// ---------- controllo indirizzo email
	if(val_email != "")
	{
   Filtro = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-]{2,})+\.)+([a-zA-Z0-9]{2,})+$/;
   if (Filtro.test(val_email))
      return true;
   else
      {
      alert("L'indirizzo e-mail inserito non č valido, controllare prego");
      document.personale.email.focus();
      return false;
      }
	 }
	// ----------------------------------------
	
	
}
//-->
</script>
Ora l'action del form č impostata a sč stesso poichč deve prelevare dati da db al onChange di una select:

<form method="post" action="#" name="personale">

per effettuare poi il controllo dei vari campi l'invio del modulo ho creato questo submit:

<input class="smb" type="submit" value="AVANTI >" onMouseDown="return controlla_dati();" onMouseUp="this.form.action='step2.php';">

Ora con explorer e opera funziona benissimo ma con firefox, in caso di errori contemplati nella funzione controlla_dati() mi fa apparire l'alert e subito dopo invia il modulo a step2.php.

Dato che, come avrete capito, non sono ferratissimo potete suggerirmi qualche alternativa/soluzione al mio problema?