Gente, ho un form di cui voglio fare il submit esclusivamente tramite JavaScript, ma al quale voglio anche applicare uno script di validazione. Ecco qui:
<form name="nomeform" method="post" action="file.php" onSubmit="return validazione();">
<input type="hidden" name="id" value="123">
<select name="sP">
<option value="pp">Provincia 1</option>
...
<option value="up">Provincia ultima</option>
</select>
<input type="button" onClick="submit()" value="INSERISCI">
</form>
Ho messo di proposito il tag "input" come "button" e non come "submit" per far sì che il form sia inviato solo se JavaScript è attivo.
Ho un problema, però: se faccio così, non funziona lo script di validazione, mentre se metto un
<button onClick="submit()">INSERISCI</button>,
lo script di validazione si attiva e mi dà il messaggio che mi aspetto, ma poi invia il form anche se non dovrebbe.
L'unico modo per far funzionare tutto a dovere è inserire il canonico <input type="submit" value="INSERISCI">, solo che così va a quel paese l'idea di rendere necessario che JavaScript sia attivo nel browser.
C'è una scappatoia a questo? E' una cosa impossibile quella che sto tentando di fare o ha un senso?
Vi ringrazio tutti quanti fin d'ora.
P.S. Il tutto funziona sempre allo stesso modo sia mettendo submit() che this.form.submit().



. Se ti va di scrivere robi che abbiano un valore, relativamente sicuri, manutentibili, utili e blabla devi avere visione d'insieme delle cose, trovare gli strumenti giusti e supportati, imparare come ottenere da questi il massimo e non scriptare 400 righe al giorno per risolvere i problemi che ti saltano all'occhio.


Non ci hai fornito il codice di validazione() e submit(), se ci mancano dei pezzi e' un po' difficile capire perche' non funziona.
Secondo la mia esperienza meno codice lato client utilizzi, meglio e' . Uno dei motivi e' che non puoi mai fare affidamento sul client perche' ci sono una miriade di browser ed una miriade di sistemi operativi (anche se la distribuzione non e' propriamente uniforme) che potrebbero avere bug di ogni tipo che non puoi controllare.
Un altro motivo e' che lato client e' possibile manipolare tutto: puoi mettere tutti i controlli JavaScript che vuoi, ma se voglio ti guardo il codice effettuo un POST a mano con dei valori che non sono validi. Quindi e' sempre meglio effettuare tutti i controlli di validita' delle form anche lato server.
Certo, dipende dalla specifica applicazione che stai sviluppando, ma se hai bisogno solo di controllare che il JavaScript sia attivo puoi semplicemente valorizzare un campo della form da JavaScript e controllarlo lato server: se e' impostato il JS e' attivo altrimenti ciccia (la prima che mi e' venuta in mente, ma sicuramente c'e' un metodo piu' pulito).
Pietro
Debian Lenny on BeagleBoard