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?