El método jQuery Validation `valid ()` devuelve 0 cuando se requiere no es verdadero
-
20-08-2019 - |
Pregunta
Estoy usando el jQuery Validation plugin y tengo un cuadro de texto con el clase digits
para forzarlo a ser solo dígitos, pero no es obligatorio. Cuando llamo validar en el formulario funciona bien, pero si llamo a valid()
en el cuadro de texto cuando está vacío, devuelve 0, a pesar de que no se muestra ningún mensaje de error y no es necesario configurarlo.
¿Alguien sabe por qué devolvería esto por un valor de entrada aparentemente válido?
Aquí está el código:
<input type="text" value="" name="kiloMetresTravelled" id="kiloMetresTravelled" class="digits"/>
y el script
<script type="text/javascript'>
var isvalid = jQuery('#kiloMetresTravelled').valid();
//isvalid == 0 when kiloMetresTravelled is blank
</script>
Solución
Verifique esto, desde la documentación :
Hace " campo " requerido y dígitos solo.
Podrías hacer algo como esto:
var isValid = jQuery('#kiloMetresTravelled').valid() || jQuery('#kiloMetresTravelled').val() == "";
Otros consejos
Creo que esto funciona:
var e="#whatever";
var isValid = $(e).valid() || $(e).val()== "" && !$(e).hasClass('required');
Hay un error en la biblioteca cuando los métodos de regla verifican los campos opcionales con " this.optional (element) " ;. Cuando el campo está vacío, this.optional devuelve & Quot; dependency-incompatch & Quot; y el método de validación devuelve " undefined " marcando el campo como no válido.
Explicación completa aquí: