2011-10-31 19 views
55

¿Cómo validar las entradas ocultas y las entradas de texto no visibles con el complemento de Validación de formularios jQuery? El problema es que estoy usando el plugin, lo que genera un campo oculto para los artículos seleccionados sugerencia automática:jQuery Validation plugin - ¿Validar entradas ocultas y no visible?

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

tengo 2 entradas de este tipo (dos de ellos sólo permiten 1 artículo), lo que yo quiero valide y muestre el error en el padre <td>. Esto es lo que he obtenido hasta ahora, pero no muestra el error ni envía un formulario, si el valor es realmente un número.

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

Usted debería considerar la selección de uno de los mensajes como respuesta. –

+1

Véase también http://stackoverflow.com/questions/8466643/jquery-validate-enable-validation-for-hidden-fields. – goodeye

Respuesta

112

Para permitir validación de elementos ocultos, anular ignorar y establecerlo en una cadena vacía:

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

es esta respuesta todavía válida? Cualquier configuración de "ignorar" que uso el formulario se envía aunque no sea válida. Intenté ignorar: [], ignorar: "", ignorar: ': hidden: not (#id_myimput). Siempre el mismo resultado: veo el aviso de error en los campos, pero el formulario se envía de todos modos. Al eliminar cualquier configuración de "ignorar", corrige la validación. – bluantinoo

+0

¿Has probado esto? porque esto está dando un error cuando uso ignore: "". 'UnEught TypeError: no se puede leer la propiedad 'configuración' de indefinido' –

23

Puede utilizar ignore opción de la siguiente manera:

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

valor predeterminado de ignore opción es :hidden que ignora todos los campos ocultos y campos no visibles (display: none etc.)

+2

Todavía no valida. Agrego una regla a una entrada oculta y me aseguro de que no sea válida, pero aún envía el formulario y no se muestran errores. – ItsGreg

+0

@EmreErkan El enlace de la documentación ahora está regado. –

12

Si las otras respuestas no funcionan para usted, intente esto en su lugar. Se elimina todo pasa por alto para el formulario, por lo que sería la confirmación de todo, incluyendo los campos ocultos:

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

para restaurar la configuración de ignorar los campos ocultos, usar algo como esto:

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

También puede utilizar el encima del código para leer el valor actual.

+0

Lo he intentado y no funcionó para mí. Me da 'TypeError: $ .data (...) undefined', he comprobado' $ 'y es el objeto jQuery adecuado. Aquí hay una respuesta alternativa http://stackoverflow.com/a/8565769/1027198. –

+3

Por extraño que parezca, su solución es la * única * que funcionó para mí, ninguna de las otras respuestas lo hizo. – Nathan

3

Otra forma de validar las entradas ocultas es la siguiente:

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