Newsgroup: it.comp.lang.javascript
Titolo: Verifica campi con onSubmit

Hi all,
ho uno script per poter controllare la corretta immissione di dati in una
form, ma non funziona (ovviamente!).
Lo script e' il seguente:
<script language="JavaScript">
function Check(form) {
if (form.R1[7].checked==true) {
    if (!Lunghezza(form.text_altro.value)) {
      return false;
     }
     else {
       return true; }
 }
}
function Lunghezza(Descrizione) {
var pass_ok = new Boolean();
pass_ok = false;
  if (Descrizione.length==0) {
      alert('Inserire una descrizione');
      pass_ok = false;
  }
  if (Descrizione.length>620) {
     alert('Hai inserito troppi caratteri nella descrizione');
     pass_ok = false;
  }
if (pass_ok) {
  return true;
}
else {
  return false;
}
}
</script>
e lo richiamo cosi':
<form method="POST" action="xxx.asp" name="form_info02" onSubmit="return
Check(this)">
Il problema e' che funziona tutto per i controlli, ma quando l'utente
inserisce tutto correttamente non viene ugualmente richiamata "xxx.asp".
Credo sia solo un problema di return false o true, ma non riesco piu' a
capirci niente...c'č qualcuno che puo' aiutarmi?
Grazie mille a tutti e scusate il lungo-post.
Rgds,
Pier

form, ma non funziona (ovviamente!).
Nyet tovarich cosi' non funziona.
Tu al tuo form ritorni true o false, ma nient'altro,
function Check(form) {
if (form.R1[7].checked==true) {
    if (!Lunghezza(form.text_altro.value)) {
      return false;
     }
     else {
       return true; }
}
}
cioe' hai ordinato al tuo browser di dire "vero" se la condizione e' di
lunghezza e vera, o di dire falso se falsa la condizione.
Lapalice colpisce ancora...
prova cosi':
nel tag <form> leva onSubmit, il tag submit lo fai diventare un "button" che
"onclick" richiama la funzione di ferifica, poi in check()
succede questo:
function check(){
if (form.R1[7].checked==true) {
    if (!Lunghezza(form.text_altro.value)){
      alert('Il testo è troppo lungo')
         }
 else {
          document.forms[0].submit()
          }
      }
    }
}
Ti e' chiaro cosa succede? Lo script richiama la funzione di controllo
if(!lunghezza(variabile)) e gli sottopone la variabile da controllare, se
l'if ottiene false succede una cosa, se ottiene altro ne succede un'altra...
(MMMMmmmmmmmuh) forse e' meglio il contrario:
function check(){
if (form.R1[7].checked==true) {
    if (Lunghezza(form.text_altro.value)){
     document.forms[0].submit()
          }
 else {
          alert('Il testo è troppo lungo')
         }
      }
    }
}
Cosi' se la condizione e' rispettata parte l'asp, altrimenti Alert.
Ciao
Nettuno

>Tu al tuo form ritorni true o false, ma nient'altro,
e qui casca l'asino ... io al mio form ritorno solo false ...
infatti esaminando attentamente il codice ho notato che la function
Lunghezza ritorna solo e sempre "false" quindi 2+2 ... il gioco e' fatto.
Ti posto il listato corretto:
<script language="JavaScript">
function Check(form) {
if (form.R1[7].checked==true) {
    if (Lunghezza(form.text_altro.value)) {
      return true;
     }
     else {
       return false; }
 }
}
function Lunghezza(Descrizione) {
  if (Descrizione.length==0) {
      alert('Inserire una descrizione');
      return false;
  }
  else {
     if (Descrizione.length>620) {
        alert('Hai inserito troppi caratteri nella descrizione');
        return false;
     }
     else {
-->       return true;    --> ecco qui il BUG!
     }
  }
}
</script>
cmq ti ringrazio perche' e' grazie a te che ho "sgamato l'intrigo"!
Piu' che altro perche' non mi piace l'attibuto "OnClick" che per quel che ne
so' non viene interpretato correttamente da IE3 o qualcosa del genere ...
non ne sono sicuro...ma ci ero gia' caduto un'altra volta e non intendo
inciamparci ancora.
Grazie ancora caro Nettuno e a presto,
Pierpaolo


Ciao

E' vero! Ho scoperto gia' l'intreccio (vedi post sopra).
Ti ringrazio comunque,
Pierpaolo

Pierpaolo
Grazie a te... non so se avrei trovato il punto esclamativo (mi stavo
accingendo a inserire lo script di verifica in una pagina molto delicata,
dove si comprano biglietti d'aereo... Ok, li la lunghezza del campo doveva
solo essere > di zero, pero' il comportamento sarebbe stato analogo), o
quanto tempo ci avrei impiegato...
A presto
^^