2011-12-15 15 views
5

Sto utilizzando lo JQuery Validation plugin per gestire la convalida del modulo.Convalida JQuery: convalida di un modulo nascosto (possibile errore)

Il problema che sto avendo è che quando un modulo è nascosto, il plugin di validazione ignora i campi che devono essere convalidati e salta direttamente all'invio del modulo.

Esempio: http://jsfiddle.net/Qg5WQ/

ho avuto uno sguardo attraverso il plugin del options e Googled questo problema, ma non riesco a trovare nulla che specifica il motivo per cui i campi all'interno di una forma nascosta vengono ignorati.

Vale la pena notare che se sono presenti due moduli in una pagina, in cui uno è nascosto e uno è visualizzato, entrambi i moduli vengono convalidati correttamente se entrambi i moduli utilizzano lo stesso metodo di convalida. Tuttavia, se si chiamano due metodi di convalida separati, i campi all'interno del modulo nascosto vengono comunque ignorati.

Convalida due forme utilizzando la stessa funzione di validazione: http://jsfiddle.net/Qg5WQ/1/

Convalida due forme utilizzando diverse funzioni di validazione: http://jsfiddle.net/Qg5WQ/2/

Qualcuno sa se si tratta di un bug o c'è una specifica modo per convalidare i moduli nascosti?

+0

sto affrontando gli stessi problemi, quindi sto facendo il mio codice per convalidare il modulo. (quando sono in .aspx webform) – manny

risposta

11

provare questo http://jsfiddle.net/Qg5WQ/3/

ho aggiunto il ignore: possibilità hidden alla chiamata validate.

$("form").validate({ 
    ignore: 'hidden', 
    rules: { 
    "first": "required" 
    }, 
    invalidHandler: function() { 
    alert("error"); 
    }, 
    submitHandler: function(form) { 
    alert("no error"); 
    } 
}); 
+0

Grazie, che stranamente funziona. Mi sembra di essere in grado di aggiungere qualcosa nel campo ignorato e funziona. Immagino che questo debba forzarlo a scorrere attraverso i campi, il che mi fa pensare che questo deve essere un bug. Grazie per l'aiuto! –

+0

@MyHeadHurts - Sì, ho notato che, molto strano, ma funziona bene comunque =) – Cyclonecode

+3

Solo una breve nota che il motivo per cui funziona è perché ti manca il colon dalla parte anteriore del **: nascosto **. Stai essenzialmente dicendogli di ignorare qualsiasi html ** ** tag che possono esistere invece di raccontarla di ignorare gli ingressi di tipo nascosto. – Dominic

7

Se si estrae l'opzione ignore sul documentation page, si dice che il valore predefinito è :hidden. Ciò significa ovviamente che se non si specifica esplicitamente l'opzione ignore, la convalida ignorerà gli input nascosti.

Basta definire l'opzione ignore (può essere lasciata vuota) e dovrebbe risolvere il problema.

$("form").validate({ 
    ignore: '', 
    rules: {"hidden_field": {required:true}} 
}); 
+0

+1 - grazie, questo spiega perché l'aggiunta di qualcosa in ignore funzionava ancora –

Problemi correlati