Newsgroup: it.comp.lang.javascript
Titolo: form: chi trova l'errore?

ciao a tutti,
questi controlli mi fanno impazzire...!!
Chi mi dice dove sbaglio? (mi dice riga 158...)
ecco:
<body>
<form name="informazioni">
<table>
<tr>
<td>Nome</td>
<td><input type="text" name="nome"></td>
</tr>
<tr>
<td>Cognome</td>
<td><input type="text" name="cognome"></td>
</tr>
<tr>
<td>Via/Corso/Piazza</td>
<td><input type="text" name="indirizzo" size="40"></td>
</tr>
<tr>
<td>Città</td>
<td><input type="text" name="indirizzo"></td>
</tr>
<tr>
<td>Stato</td>
<td><input type="text" name="indirizzo" maxlength="2" size="2"></td>
</tr>
<tr>
<td>Codice postale</td>
<td><input type="text" name="cap" maxlength="5" size="5"></td>
</tr>
<tr>
<td>Indirizzo e-mail</td>
<td><input type="text" name="email"></td>
</tr>
<tr>
<td>Telefono</td>
<td><input type="text" name="telefono" maxlength="12" size="12"></td>
</tr>
<tr>
<td>Fax</td>
<td><input type="text" name="fax" maxlength="12" size="12"></td>
</tr>
<tr>
<td>Sport preferito</td>
<td>
<select name="sport">
<option value="default">Scegli uno sport
<option value="calcio">Calcio
<option value="tennis">Tennis
<option value="nuoto">Nuoto
<option value="basket">Basket
</select>
</td>
</tr>
<tr>
<td>&nbsp;</td>
<td><input type="button" value="Submit" onClick="errorCheck();"></td>
</tr>
</table
</form>
<script>
//crea funzione errorCheck
function errorCheck()
{
//crea alcune variabili per lo script
var MessaggioErroreCampoRichiesto="";
var nomeInviato="";
var cognomeInviato="";
var emailInviato="";
var capInviato="";
var MessaggioErroreComboBox="";
var MessaggioErroreEmail="";
var MessaggioErroreCap="";
//controlla gli errori nei campi richiesti
nomeInviato = document.informazioni.nome.value
cognomeInviato = document.informazioni.cognome.value
emailInviato = document.informazioni.email.value
if ((!nomeInviato) || (!cognomeInviato)  || (!emailInviato))
{
//----------------------------------------------controlla presenza nome
if (!nomeInviato)
{
 MessaggioErroreCampoRichiesto="- il nome\r"
}
//----------------------------------------------controlla presenza cognome
if (!cognomeInviato)
{
 MessaggioErroreCampoRichiesto= MessaggioErroreCampoRichiesto + "- il
cognome\r"
}
//-----------------------------------------------controlla presenza e-mail
if (!emailInviato)
{
 MessaggioErroreCampoRichiesto= MessaggioErroreCampoRichiesto + "-
l'indirizzo e-mail\r"
}
//-----------------------------------------------controlla selezione da
combo box
if (document.informazioni.sport.value == 'default')
{
 MessaggioErroreComboBox="- non è stato inserito lo sport preferito";
}
//-----------------------------------------------controlla correttezza
formale e-mail
if (emailInviato)
{
 emailInviato=document.informazioni.email.value;
 emailValore   = new String (emailInviato);
 emailHaAt     = emailValore.indexOf("@");
 emailHaPunto  = emailValore.indexOf(".");
 if ((emailHaAt == -1) || (emailHaPunto == -1))
 {
    MessaggioErroreEmail = "-il tuo indirizzo e-mail\r";
 }
}
//------------------------------------------------controlla correttezza
formale CAP
capInviato=document.informazioni.cap.value;
if (capInviato)
{
 contNumeri=0;
 contCap=0;
 numeroTrovato="";
 while(contCap<5)
 {
  while(contNumeri<10)
  {
     if(capInviato.subStr(contCap, 1) == contNumeri
  }
   {
       numeroTrovato = "yes";
       contNumeri = 11;
   }
   else
   {
       numeroTrovato = "no";
   }
  contNumeri++;
  }
  if (numeroTrovato != "yes")
  {
  contCap=6;
  }
  else
  {
  contCap++;
  contNumeri=0;
  }
 contCap++;
 }
}
if (numeroTrovato != "yes")
{
 MessaggioErroreCap= "- il CAP presenta dei valori non mumerici!\r";
}
//----------------------------------------------------mostra all'utente i
dati mancanti
if ((MessaggioErroreCampoRichiesto) || (MessaggioErroreComboBox) ||
(MessaggioErroreEmail) || (MessaggioErroreCap))
{
 alertMsg=MessaggioErroreCampoRichiesto;
 alertMsg=alertMsg + MessaggioErroreComboBox;
 alertMsg=alertMsg + MessaggioErroreEmail;
 alertMsg=alertMsg + MessaggioErroreCap;
alert (alertMsg);
}
else
{
 document.informazioni.submit();
}
}
}
</script>
</body>


Hai scritto subStr invece che substr
if(capInviato.substr(contCap, 1) == contNumeri)
Non puoi dare lo stesso nome a campi diversi (indirizzo); verra' inviato
uno solo.
- i commenti del codice vanno scritti lasciando uno spazio dopo le due
barre // ghjkgjhj, altrimenti IE aggiunge un suffisso file: che blocca
lo script (con NS)
 - e' preferibile che i commenti non siano inutilmente lunghi perche' i
newsreader rompono le righe troppo lunghe che poi si devono ricostruire
- la dichiarazione delle variabili non e' obbligatoria in javascript.
Tutto questo perche' sono stato mezz'ora a sistemare il codice e 2
secondi per leggere nella console di NS l'errore :-((
Su 
www.jsdir.it
 trovi esempi sul controllo form meno prolissi;
nell'esempio di seguito
- invio del riferimento al modulo tramite parametro nella chiamata della
funzione
- utilizzo di un cliclo for che legge tutti gli elementi contenuti nella
collezione elements del form
- verifica email su presenza carattere @ e di un .(punto) dopo il
carattere @
- verifica lunghezza del cap e contenuto tramite una espressione
regolare il carattere speciale \D identifica un non numero
---------------------
<script>
function errorCheck(oForm) {
 // controlla gli errori nei campi richiesti
 MessaggioErroreCampoRichiesto='';
 MessaggioErroreEmail =''
 MessaggioErroreCap='';
 MessaggioErroreComboBox='';
 for (i=0;i< oForm.elements.length;i++) {
  vEl=oForm.elements[i]
  if (vEl.name=='nome' && vEl.value=='') MessaggioErroreCampoRichiesto
+= '- '+vEl.name+'\n';
  if (vEl.name=='cognome' && vEl.value=='')
MessaggioErroreCampoRichiesto += '- '+vEl.name+'\n';
  if (vEl.name=='email' && vEl.value=='') MessaggioErroreCampoRichiesto
+= '- '+vEl.name+'\n';
  if (vEl.name=='sport' &&
vEl.options[vEl.selectedIndex].value=='default') MessaggioErroreComboBox
+= '- non è stato inserito lo sport preferito\n';
  if (vEl.name=='email') {
   if (vEl.value.indexOf('@')<0 ||
vEl.value.indexOf('@')>vEl.value.lastIndexOf('\.')) MessaggioErroreEmail
= "- il tuo indirizzo e-mail\r";
  }
  if (vEl.name=='cap') {
   if (vEl.value.length<5 || vEl.value.search(/\D/)>0)
MessaggioErroreCap= "- il CAP presenta dei valori non mumerici!\r";
  }
 }
 // --------------mostra all'utente i dati mancanti
 if ((MessaggioErroreCampoRichiesto) || (MessaggioErroreComboBox) ||
(MessaggioErroreEmail) || (MessaggioErroreCap)) {
  alertMsg="Controlla questi campi\n" +MessaggioErroreCampoRichiesto;
  alertMsg=alertMsg + MessaggioErroreComboBox;
  alertMsg=alertMsg + MessaggioErroreEmail;
  alertMsg=alertMsg + MessaggioErroreCap;
  alert (alertMsg);
 } else {
  document.informazioni.submit();
 }
}
</script>
</head>
 <body>
<form name="informazioni">
<table>
<tr><td>Nome</td><td><input type="text" name="nome"></td></tr>
<tr><td>Cognome</td><td><input type="text" name="cognome"></td></tr>
<tr><td>Via/Corso/Piazza</td><td><input type="text" name="via"
size="40"></td></tr>
<tr><td>Città</td><td><input type="text" name="citta"></td></tr>
<tr><td>Stato</td><td><input type="text" name="stato" maxlength="2"
size="2"></td></tr>
<tr><td>Codice postale</td><td><input type="text" name="cap"
maxlength="5" size="5"></td></tr>
<tr><td>Indirizzo e-mail</td><td><input type="text"
name="email"></td></tr>
<tr><td>Telefono</td><td><input type="text" name="telefono"
maxlength="12" size="12"></td></tr>
<tr><td>Fax</td><td><input type="text" name="fax" maxlength="12"
size="12"></td></tr>
<tr><td>Sport preferito</td><td>
  <select name="sport">
   <option value="default">Scegli uno sport
   <option value="calcio">Calcio
   <option value="tennis">Tennis
   <option value="nuoto">Nuoto
   <option value="basket">Basket
  </select>
</td></tr>
<tr><td>&nbsp;</td><td><input type="button" value="Submit"
onClick="errorCheck(this.form);"></td></tr>
</table>
</form>
</body>
-----------------
Saluti, Paolo