Newsgroup: it.comp.lang.javascript
Titolo: Annullare il submit

Perchč cosě funziona:
<form onsubmit="return confirm ('pippo');">
e cosě no (viene sempre eseguito il submit):
<form onsubmit="chkform();">
...
function chkform(){
    return confirm ("pippo") ;}
Saluti.
Luciano

     return confirm ("pippo") ;}
perché non stai restituendo valori? (return chkform())
-- 
"E' l' ignoranza che crea l'intolleranza
 di gente cieca e senza coscienza"
									  S.S.S.

 perché non stai restituendo valori? (return chkform())
Grazie, preciso e chiaro come sempre.
Questo però mi ha creato un'altro problema :-(
Prima del submit devo controllare, fra l'altro,  che un input sia di almeno
3 caratteri. Prima di farlo lo trimmo con una funzione testata che uso da
anni. Il problema è che quella funziona alla fine dice
return stringa ;
questo return viene intercettato dal return dell'onsubmit="return
chkform())" ed il submit parte prima che siano finiti gli altri controlli.
Saluti.
Luciano

 chkform())" ed il submit parte prima che siano finiti gli altri controlli.
non mi è chiaro: onsubmit non può "intercettare" return, riceve solo il
risultato restituito da chkform()...
cioé:
 <form onsubmit="return chkform()">
function chkform() {
 var ris=confirm("confermi?"); //la confirm ha un suo return ma non è che
la "spara" all'onsubmit!
 var pippo=trim("  prova  "); //la trim restituisce una stringa, ma non è
la "spara" all'onsubmit!
 return false; //all'onsubmit arriva false
}
-- 
"Emancipate yourselves from mental slavery;
None but ourselves can free our minds"
									    B.M.

 risultato restituito da chkform()...
Provo a spiegarmi meglio
La funzione chkform funziona perfettamente, se però prima di controllare la
length dell'input la trimmo, il submit parte *prima* della riga successiva
che ha il confirm.
function chkform(){
 var testo = document.getElementById("testo_cerca").value ;
//testo = trim(testo) ;
 if (testo.length < 3){
  alert ("digitare almeno 3 caratteri") ;
  return false ; }
else {
  return true ; }
}
Se tolgo il commento alla riga col trim l'istruzione successiva non viene
eseguita.
La funzione  trim (stringa)  finisce con un return stringa.
________________
ERRATA CORRIGE
________________
Mentre scrivevo questo msg mi sono accorto che la funzione che uso è Trim
(stringa) non trim(stringa) , mettendo la maiuscola funziona tutto.
Non capisco cmq il perchè della sequenza di eventi (non mi da errori, il
submit parte alla riga del trim...)
Ciao. e grazie.
Luciano

 (stringa) non trim(stringa) , mettendo la maiuscola funziona tutto.
:-O ah ecco .. .segnalava errore (firefox te lo avrebbe detto, penso, a
meno che non assegnava "undefined"), alla form non arrivava un false e così
prendeva il default "true".
-- 
"La realtà è un'illusione causata dall'assenza di alcool."
									      A.

 prendeva il default "true".
No, purtroppo firebug non mi ha segnalato nulla.
Ti chiedo l'ultima cosa poi non ti scoccio più:
Accanto all'input ho la classica giffetta "clicca qui". Nell'ONCLICK del suo
A HREF ho provato f1.submit () ma non si esegue la chkform(), e return
chkform(), e esegue la funzione ma non fa il submit (perchè si limita
imamgino a recuperare il true del return)
Saluti.
Luciano

 imamgino a recuperare il true del return)
sì, scatenando direttamente il submit non esegue l'onsubmit (ha i suoi pro
e contro questa funzionalità).
del tipo
 if(chkform())
  tuaform.submit();
-- 
"Affacciati affacciati benedici, guardaci
 guardaci...guardaci!
 Tanto sono quasi duemila anni che stai a guardare!"
									    E.B.

   tuaform.submit();
Grazie di tutto...a buon rendering!
Luciano