2011-10-31 7 views
55

Come convalidare gli input nascosti e gli input di testo non visibili con il plugin jQuery Form Validation? Il problema è, che sto usando suggerimento automatico plug-in, che genera un input nascosto per gli elementi selezionati:plug-in jQuery Validation: convalida degli input nascosti e non visibile?

<input id="hiddenInput" type="hidden" name="something" value="1" /> 

Ho 2 ingressi come questo (entrambi consentire solo 1 punto), che voglio convalidare e visualizzare l'errore nel genitore <td>. Questo è quello che ho ottenuto finora, ma non visualizza l'errore o invia un modulo, se il valore è in realtà un numero.

$("#form1").validate({ 
     rules: { 
      something: { 
       number:true, 
       min:1, 
       required:true 
      } 
     } 
     }) 
+0

Si dovrebbe prendere in considerazione selezionando uno dei posti come risposta. –

+1

Vedere anche http://stackoverflow.com/questions/8466643/jquery-validate-enable-validation-for-hidden-fields. – goodeye

risposta

112

Per consentire convalida di elementi nascosti, ignora l'ignore e lo imposta sulla stringa vuota:

$("#form1").validate({ 
    ignore: "", 
    rules: { 
     something: { 
      number:true, 
      min:1, 
      required:true 
     } 
    } 
}); 
+4

questa risposta è ancora valida? Qualsiasi impostazione "ignora" che utilizzo il modulo viene inviata anche se non è valida. Ho provato a ignorare: [], ignora: "", ignora: ': hidden: not (#id_myimput). Sempre lo stesso risultato: vedo l'errore sui campi, ma il modulo viene comunque inviato. La rimozione di qualsiasi impostazione "ignora" corregge la convalida. – bluantinoo

+0

Hai provato questo? perché questo sta dando un errore quando uso ignora: "". 'Uncaught TypeError: Impossibile leggere la proprietà 'settings' di undefined' –

23

È possibile utilizzare l'opzione ignore come questo:

$("#form1").validate({ 
    ignore: "input[type='text']:hidden", 
    rules: { 
     something: { 
      number:true, 
      min:1, 
      required:true 
     } 
    } 
}); 

Il valore di default di ignore opzione è :hidden che ignora tutti i campi nascosti e campi non visibili (display: none ecc)

+2

Ancora non convalida. Aggiungo una regola a un input nascosto e mi assicuro che non sia valida, ma invia ancora il modulo e non viene mostrato alcun errore! – ItsGreg

+0

@EmreErkan Il collegamento alla documentazione è ora nascosto. –

12

Se le altre risposte non funzionano, prova questo. Rimuove tutte ignora per la forma, quindi sarebbe convalidare tutto, compreso i campi nascosti:

$.data($('form')[0], 'validator').settings.ignore = ""; 

per ripristinare le impostazioni di ignorare i campi nascosti, usare qualcosa di simile a questo:

$.data($('form')[0], 'validator').settings.ignore = "input[type='text']:hidden"; 

È anche possibile utilizzare il sopra il codice per leggere il valore corrente.

+0

L'ho provato e non ha funzionato per me. Mi dà "TypeError: $ .data (...) non è definito", ho controllato "$" ed è un oggetto jQuery appropriato. Ecco una risposta alternativa http://stackoverflow.com/a/8565769/1027198. –

+3

Stranamente, la tua soluzione è l'unica * che ha funzionato per me - nessuna delle altre risposte ha funzionato. – Nathan

3

Un altro modo per la validazione dell'input nascosto è questo:

$("#form1").validate({ 
     ignore: "not:hidden", 
     rules: { 
      something: { 
       number:true, 
       min:1, 
       required:true 
      } 
     } 
}); 
Problemi correlati