Validare un input text di una form

  • Creatore Discussione Creatore Discussione Max
  • Data di inizio Data di inizio

Max

Nuovo Utente
13 Set 2004
20
0
0
Salve. Nel seguente modulo, mi serve controllare che i campi non siano vuoti, e se nel caso lo sono, bisogna riempirli con delle stringhe, come ad es. "campo vuoto", ecc.. giusto per non farle restare vuote.
Come faccio? Mi fate un esempio (anche per 1 input solo)?

Grazie.
Max!


<form action="<%=MM_editAction%>" method="post" name="form1" onSubmit="MM_validateForm('Nome','','R','Cognome','','R','Username','','R','Passw','','R','email','','NisEmail');return document.MM_returnValue">
<table align="center">
<tr valign="baseline">
<td nowrap align="right">Nome:</td>
<td>
<input name="Nome" type="text" value="" size="20" maxlength="20">
</td>
</tr>
<tr valign="baseline">
<td nowrap align="right">Cognome:</td>
<td>
<input name="Cognome" type="text" value="" size="20" maxlength="20">
</td>
</tr>
<tr valign="baseline">
<td nowrap align="right">Username:</td>
<td>
<input name="Username" type="text" value="" size="20" maxlength="20">
</td>
</tr>
<tr valign="baseline">
<td nowrap align="right">Passw:</td>
<td>
<input name="Passw" type="text" value="" size="20" maxlength="20">
</td>
</tr>
<tr valign="baseline">
<td nowrap align="right">Email:</td>
<td>
<input name="email" type="text" size="30" maxlength="30">
</td>
</tr>
<tr valign="baseline">
<td nowrap align="right">&nbsp;</td>
<td>
<input type="submit" value="Inserisci Utente">
</td>
</tr>
</table>
<input type="hidden" name="MM_insert" value="form1">
</form>
 
Ti faccio un esempio

<!-- test.html -->

<form method="post" action="test.asp">
<input type="text" name="stringa">
<input type="submit" value="OK">
</form>

<!-- test.asp -->

<%@LANGUAGE = VBScript%>
<%
Dim stringa
stringa = Request.Form("stringa")
If Len(Trim(stringa)) = 0 Then
Response.Write "Inserisci un testo"
Else
Response.Write "Hai scritto " & stringa
End If
%>
 
Ciao luke. Grazie della risposta.
Si, più o meno è quello che volevo.
Però a me serve una funzione, presente nella stessa pagina, che controlli tutti gli input type della form, e se questi input sono vuoti, ci inserisce in automatico un valore di default.
Come inserisco questo valore di default in un input text?

Grazie
Max
 
Non l'ho testato...

<%@LANGUAGE = VBScript%>
<%
Option Explicit
On Error Resume Next
Dim modulo
modulo = Request.QueryString("modulo")
Dim stringa
stringa = Request.Form("stringa")
If modulo = "OK" Then
If Len(Trim(stringa)) = 0 Then
stringa = "Inserisci un testo"
Else
stringa = "Hai scritto " & stringa
End If
End If
%>

<form method="post" action="test.asp?modulo=OK">
<input type="text" name="stringa" value="<%=stringa%>">
<input type="submit" value="OK">
</form>

-----

Fammi sapere ;)
 
Ciao Davide, sono daccordo al 50% perchè ci assicuro che ci sono molti rompibiiiiip che si prendono la briga di scaricare il form in locale, by-passare il controllo Javascript ed inserire dati a cavolo, tanto per dar fastidio al prossimo! Questo col controllo lato server non avviene.

D'altra parte fare (anche) il controllo lato client evita i tempi di attesa e di risposta del server, dato che il pacchetto di dati non gli viene inviato finchè il controllo non è stato esaudito.

Io sono per entrambi i controlli! Come dice il mio caro compaesano Totò

LA PRUDENZIA NON E' MAI TROPPO

:)
 
Certo!

L'action della form è sempre in chiaro nel codice HTML, quindi basta copiare il form, sostituire il button con un submit e la frittata è fatta!

E ti dirò di più: username e password devono sempre essere verificate da un'espressione regolare che consente la scelta di soli caratteri alfanumerici, sia in fase di registrazione che di login, altrimenti ti fanno anche una bella SQL Injection e la frittata si brucia addirittura!

Nella sezione ASP / Tutorial di MR Webmaster trovi unmio articoletto che spiega come.

Ciao ;)
 
Salve! Mi fa piacere che la discussione sta evolvendo... :fonzie:
Allora...io farei anche una funzione in Javascript o in VBScript, però il Dreamweaver ne ha creata già una sua, che mi è difficile modificare.

Ecco il codice:

function MM_validateForm() { //v4.0
var i,p,q,nm,test,num,min,max,errors='',args
=MM_validateForm.arguments;
for (i=0; i<(args.length-2); i+=3) { test=args[i+2]; val=MM_findObj(args);
if (val) { nm=val.name; if ((val=val.value)!="") {
if (test.indexOf('isEmail')!=-1) { p=val.indexOf('@');
if (p<1 || p==(val.length-1)) errors+='- '+nm+' must contain an e-mail address.\n';
} else if (test!='R') { num = parseFloat(val);
if (isNaN(val)) errors+='- '+nm+' must contain a number.\n';
if (test.indexOf('inRange') != -1) { p=test.indexOf(':');
min=test.substring(8,p); max=test.substring(p+1);
if (num<min || max<num) errors+='- '+nm+' must contain a number between '+min+' and '+max+'.\n';
} } } else if (test.charAt(0) == 'R') errors += '- '+nm+' is required.\n'; }
} if (errors) alert('The following error(s) occurred:\n'+errors);
document.MM_returnValue = (errors == '');

Questa funziona l'ha creata automaticamente il Dreamweaver MX.
Ora, "onSubmit" del form richiama questa funzione che già convalida sommariamente gli input text.
Ora, come la modifico? Oppure, posso anche creare un'altra funzione, ma come la richiamo sempre da "onSubmit" se questo richiama già la funzione di Dreamweaver?

Grazie!
Max!
 
lukeonweb ha scritto:
sostituendo all'onsubmit la funzione di dreamweaver con la tua... prova e facci sapere ;)

Ciao!
Io non voglio cancellare la funzione che ha creato Dreamweaver, ma vorrei aggiungere qualche linea di codice a quella stessa funzione. Oppure vorrei crearne una nuova, ma richiamarle tutte e due. E' possibile richiamarle entrambe da "onSubmit"?

Ciao
Max!
 
Perchè la prima fatta da Dreamweaver fa un primo controllo, poi la mia farà i controlli che non fà la prima!

Come si richiamano entrambe in "OnSubmit"?

Grazie
Max!
 

Discussioni simili