638 messaggi dal 21 marzo 2008
Ciao a tutti
ho un form che contiene textbox, fileupload, dropdownlist e checkbox.
Vorrei al click su un tasto, richiamare un HttpHandler e controllare se i dati inseriti sono completi ed esatti:
$.ajax({
url: "Handler/myValidator.ashx?type=registrazione",
data: { },
dataType: "json",
async: false,
success: function (res) {
var errore = false;
var msg_error = '';

if (res.msg_error != '{}') {
errore = true;
msg_error += (msg_error != '' ? '<br />' + res.msg_error : res.msg_error);
}
if (errore) {
alert(msg_error)
e.preventDefault();
}
else {
SalvaDescrizioni();
}
},
error: function (err) { }
});

Il problema è che con so come accedere ai controlli dall'httphandler. Se scrivo: context.Request.Form non mi trova nessun controllo.
Grazie
5.390 messaggi dal 09 febbraio 2002
Contributi
ciao,

Gemini78 ha scritto:
Se scrivo: context.Request.Form non mi trova nessun controllo.
Grazie


sì, questo succede perché l'oggetto data è vuoto:
...
data: { },
...
Quindi jQuery, nel preparare la richiesta ajax, non invia alcun valore al tuo HttpHandler non avendone trovato nessuno in quell'oggetto. Dovresti fare una cosa tipo:

data: {nomecampo: $("#nomecampo").val())},
type: "POST"
Ricorda anche che devi impostare il type a "POST", altrimenti jQuery effettuerà una richiesta di tipo GET. Dall'HttpHandler potrai recuperare il valore con Request.Form["nomecampo"].

Comunque, da qui già si capisce che realizzare una validazione in questo modo non è una cosa immediata. Devi inserire tutti i campi nell'oggetto data e se, oltre alla validazione server volessi offrirne anche una versione client, dovresti scrivere altrettanto codice javascript. Inoltre dovresti svilupparti una parte di codice che si occupi di visualizzare gli errori.

Potresti ottenere un buon risultato con molto meno lavoro se utilizzassi questo plugin di jQuery.
http://docs.jquery.com/Plugins/Validation
Tra l'altro, è lo stesso che di solito si usa sviluppando applicazioni web con MVC3.

Ti fornisce una struttura per effettuare il controllo, sul client, delle più comuni rules di validazione (required, minlength, email, ecc...) ma è anche in grado di preparare per te la richiesta ajax nel caso volessi far validare il campo al server (rule chiamata remote"). Ti visualizza anche gli eventuali errori e tu devi soltanto predisporre delle <label class="error" come contenitori di tali messaggi.

Dagli un'occhiata, ciao!
Modificato da BrightSoul il 28 gennaio 2012 16.26 -

- So what you're saying is, if we get in trouble, there's no one to help us out?
- I'm afraid not.
- Fantastic!
638 messaggi dal 21 marzo 2008
Grazie mille
Ho già letto qualcosa sulla validazione con jquery.
Ma non sono sicuro di poter controllare un fileuplod. Per essempio devo controllare se è un'immagine e se ha una larghezza minima.
Ancora grazie
5.390 messaggi dal 09 febbraio 2002
Contributi
ciao,

Gemini78 ha scritto:
Ma non sono sicuro di poter controllare un fileuplod. Per essempio devo controllare se è un'immagine e se ha una larghezza minima.

questo devi per forza controllarlo lato server con le GDI+, indipendentemente dal sistema di validazione che usi. Infatti non hai modo di conoscere la dimensione dell'immagine client side perchè il browser non ti permette di aprire file presenti sul disco fisso dell'utente.

Anche se hai una validazione client, ricorda che l'utente può sempre bypassarla facilmente. Per questo motivo dovresti ripetere la validazione anche server side, aggiungendo pure il controllo del file che è stato postato.

ciao
Modificato da BrightSoul il 29 gennaio 2012 19.30 -

- So what you're saying is, if we get in trouble, there's no one to help us out?
- I'm afraid not.
- Fantastic!
638 messaggi dal 21 marzo 2008
ho già previsto il doppio controllo. Voglio prima controllare tutto con jquery perchè dato che l'utente carica delle immagini, quando torno alla pagina dopo aver verificato che c'è un errore, i file selezionati dall'utente vengono persi e deve riselezionarli.

2 domande sulla validazione con jquery:
invece di far visualizzare il messaggio di errore, come faccio a modificare il colore del bordo del controlo ecc?
quando utilizzo 'remote', posso utilizzare altri plugins e come?
Grazie mille e scusa per il disturbo
5.390 messaggi dal 09 febbraio 2002
Contributi
ciao,

Gemini78 ha scritto:

perchè dato che l'utente carica delle immagini, quando torno alla pagina dopo aver verificato che c'è un errore, i file selezionati dall'utente vengono persi e deve riselezionarli.
certo, è giusto.

Gemini78 ha scritto:

invece di far visualizzare il messaggio di errore, come faccio a modificare il colore del bordo del controlo
Quando un campo non è conforme alle regole di validazione, jQuery gli aggiunge una classe "error". Con il CSS puoi dare uno stile a questa classe, come ad esempio il bordo rosso.
.error {border:2px solid #FF0000;}


Gemini78 ha scritto:

quando utilizzo 'remote', posso utilizzare altri plugins e come?
Cosa intendi con "altri plugins"? Vuoi dire altre regole di validazione? Sì, trovi un esempio qui:
http://docs.jquery.com/Plugins/Validation/Methods/remote#options
Vedi che hanno usato sia "remote" che "required" ed "email".

Gemini78 ha scritto:

Grazie mille e scusa per il disturbo
Prego, figurati :)
Modificato da BrightSoul il 30 gennaio 2012 21.06 -

- So what you're saying is, if we get in trouble, there's no one to help us out?
- I'm afraid not.
- Fantastic!
638 messaggi dal 21 marzo 2008
ciao
per richiamare altri plugin intendo per esempio richiamare il plugin per l'upload dei file in questo modo posso controllare se il file caricato è un'immagine ecc
ancora grazie
5.390 messaggi dal 09 febbraio 2002
Contributi
ciao, penso di sì, anche se sono del parere che se il campo file si trova nel form insieme ad altri campi, vada postato insieme a loro.

Potresti, per esempio, predisporre nella pagina un <iframe name="upload"> nascosto e impostare il target del form su "upload". In questo modo, passata la validazione client, il form verrebbe postato ad una pagina contenuta nell'iframe nascosto. La pagina dovrebbe quindi produrre un javascript che:
  • Reindirizza l'utente se l'immagine caricata era valida
  • Esegue del javascript (es. per mostrare un alert) se l'immagine non era valida. L'utente troverà il form inalterato perché la pagina principale non si è mai ricaricata, dato che il POST è avvenuto verso l'iframe. Dovrà quindi selezionare un'immagine diversa affinché il nuovo POST vada a buon fine. Qui trovi un plugin che effettua dei POST su un iframe nascosto:
    http://jquery.malsup.com/form/#file-upload
    ma puoi realizzarlo anche senza plugin...


In alternativa, separi i campi "normali" dal campo file. In una prima fase, fai inserire le informazioni all'utente e gli fai inviare il form. Se le informazioni erano valide, gli presenti in una seconda fase la possibilità di caricare dei file usando un plugin a tua scelta (es. Uploadify).

ciao
Modificato da BrightSoul il 03 febbraio 2012 23.12 -

- So what you're saying is, if we get in trouble, there's no one to help us out?
- I'm afraid not.
- Fantastic!

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.
Community
Ultimi messaggi
UTENTI ONLINE
In primo piano

I più letti di oggi

Media
In evidenza
MISC