pusher ha scritto:
il controllo incriminato è quello sul campo materiali, se lo elimino fila tutto liscio a dimostrazione che il resto e giusto, mentre inserendolo cosi come riportato mi dà giustamente la alert, seguita dalla confirm, che pero rispondendo alla confirm sia con ok che con annulla, la validazione si interrompe. da quanto ho capito l'intoppo è che anche rispondendo true alla confirm, la if rimane false e quindi si ferma, ma sono tre giorni che ci batto la testa e non riesco a trovare una soluzione
Secondo me invece lo script si interrompe per un altro motivo. Ecco le tue righe incriminate (semplificate togliendo le parentesi, in questo caso superflue):
nomat=confirm("lasciare vuoto il campo materiali?");
if (nomat=="0") return false;
else return true;
Cos'hanno in comune le due destinazioni, ovvero cliccando "OK" o "Annulla"?
In comune hanno la sintassi RETURN.
Return significa questo, all'interno di un metodo/funzione: "Ho verificato quello che volevo verificare, ora ti faccio sapere se l'esito è positivo o negativo".
Dopo l'istruzione RETURN, l'esecuzione dello script si interrompe.
Se quello che vuoi ottenere al click su "OK" è di proseguire lo script di validazione, semplicemente togli quella parte di codice, in modo che rimanga solo RETURN FALSE premendo "Annulla".
Potresti addirittura stringare tutto il suddetto blocco in una riga sola:
if (!confirm("lasciare vuoto il campo materiali?")) return false;
Ovvero: SE si clicca Annulla alla domanda di conferma, ferma lo script e blocca l'operazione.
Fammi sapere come va