View Full Version : Difficoltà nel validare un form con javascript
Salve a tutti.
Ho un piccolo problema con la validazione di un form in una pagina jsp.
Ho creato una funzione che controlla l'input di alcuni campi e stampa un alert al primo errore che incontra. Fin qui tutto ok.
Il problema sorge dopo la verifica dei campi dove avrei la necessità di ripresentare la pagina jsp se la validazione fallisce e fare la richiesta a una servlet se i dati sono corretti.
In piu l'immissione dei dati puo fallire fino a massimo tre volte. Dopo questo limite devo riempire i campi con valoro casuali e fare la richiesta alla servlet.
Quindi i punti in cui non so che fare sono tre:
1) Come fare per scegliere dove andare (servlet o di nuovo la jsp) dopo la validazione.
2) Come fare per contare il numero di validazioni fallite.
3)Cme riempire in modo casuale.
Grazie a chi risponde.
Dimenticavo di postarvi i codici che ho scritto:
JSP
<HTML>
<HEAD><TITLE>INSERIMENTO DI UN VOLO</TITLE>
<SCRIPT language=JavaScript src="inserimento.js"></SCRIPT></HEAD>
<BODY BGCOLOR="white" onLoad()="contaErrori();">
<%= request.getParameter("sede")%><br>
<FORM METHOD="GET" onSubmit="controllaForm(this);" ACTION="servlet/RicercaProdotto">
Inserisci i dati del prodotto:<br>
<table>
<tr><td width=200>
<label>Categoria
<select name="categoria">
<option value="Computer"> Computer
<option value="notebook"> Notebook
<option value="stampante"> Stampante
<option value="monitor"> Monitor
<td width=200>Codice<input type="text" size="5" name="codice"></td>
<td width=200>Marca<input type="text" size="8"name="marca"></td>
<td> Modello<input type="text" size="8"name="modello"></td>
<td> Quantita'<input type="text" size="8"name="quantita"></td>
<td> Prezzo<input type="text" size="8"name="prezzo"></td>
<tr><td><br>Data immissione<input type ="text" maxlength="2" size="2" name="giornoImmissione">
<input type="text" maxlength="2" size="2" name="meseImmissione"><td>
<input type="text" maxlength="4" size="4" name="annoImmissione"><td> </tr>
<tr><td width=200>
<label>Rateizzazione
<select name="rata">
<option value="si"> Si
<option value="no"> No </tr>
<tr><td><input type="text" name="numRate">Numero Rate</input></tr>
<tr><td><button type="submit">INVIA DATI SUBITO!!!</button></td></tr>
</table>
</form>
</BODY>
</HTML>
FILE JS
<!--
function controllaForm(form){
var numErrori = 0;
var c = form.codice.value;
if(c.indexOf(' ')!=-1 && numErrori==0){alert("Codice non valido");numErrori=1;}
var q = form.quantita.value;
if((q<1 || q>100) && numErrori==0 ){alert("Quantita non valida"); numErrori=1;}
var prezzo = form.prezzo.value;
indiceVirgola = prezzo.indexOf(',');
if(indiceVirgola==-1 && numErrori==0){alert("Prezzo non espresso con i decimali"); numErrori=1;}
if((prezzo.length-1-indiceVirgola!=2) && numErrori==0){alert("Nel prezzo ci devono essere due cifre decimali"); numErrori=1;}
if((prezzo.charAt(0)=="-") && numErrori==0){alert("Prezzo deve essere positivo"); numErrori=1;}
var rata = form.rata.value;
var numRate = form.numRate.value;
if(rata=="si"){
if((numRate%6!=0) && numErrori==0){
alert("Il numero di rate non è multiplo di 6");
numErrori=1;
}
}
}
beppegrillo
18-04-2006, 19:12
ti dò un consiglio che non riguarda la tua specifica richiesta, ma vale in genere.
Non ti affidare unicamente ad i controlli js per validare i tuoi form, ma effetua controlli anche lato server (jsp nel tuo caso), in quanto per bypassarli basta semplicemente disabilitare il js.
Per esigenze che non posso riportare devo per forza usare il js.
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.