2010-06-27 22 views
13

estoy usando la validación de jQuery (http://docs.jquery.com/Plugins/Validation) de esta manera:Validación de Jquery: ¿permite el número sin el cero inicial?

var $__field = $("#selector"); 
    if ($__field.is(":visible")) { 
     $__field.rules('add', { required: true }); 
     $__field.rules('add', { number: true }); 
    } 

Si el usuario introduce un número sin un cero, por ejemplo 0.5 a continuación, jquery de validación dice "Por favor, introduzca un número válido."

¿Cómo puedo cambiar la validación para permitir la entrada de números sin requerir el cero inicial?

Respuesta

28

El problema es con la expresión regular utilizada para los números. En cuanto a the latest version, líneas 1021-1023, tenemos:

number: function(value, element) { 
    return this.optional(element) || /^-?(?:\d+|\d{1,3}(?:,\d{3})+)(?:\.\d+)?$/.test(value); 
}, 

El problema es que este primer trozo, que busca que lleva signo y números negativos, ya sea individuales o en grupos de tres, separados por comas, es no es opcional:

(?:\d+|\d{1,3}(?:,\d{3})+) 

Tacking un ? en el extremo hará que sea opcional:

(?:\d+|\d{1,3}(?:,\d{3})+)? 

Con esta actualización, puede que modificar r copia local del plug-in, el cambio de la expresión regular a la versión modificada, o agregar un replacement validation method a su javascript:

jQuery.validator.addMethod("number", function(value, element) { 
    return this.optional(element) || /^-?(?:\d+|\d{1,3}(?:,\d{3})+)?(?:\.\d+)?$/.test(value); 
}, "Please enter a valid number."); 

En cualquier página con este addMethod llamada, el método number validación será anulado a hacer una serie validación que no requiere un cero inicial.

+0

Gracias - ¡este no ha sido respondido durante meses! –

+0

No hay problema. Esto me mordió en un sistema que he estado desarrollando y en la búsqueda de la respuesta encontré tu pregunta. Envié un correo electrónico al creador del complemento para que me dé su opinión sobre la expresión regular y, si no hay problemas, sobre cómo obtener la corrección en el complemento. – boflynn

+0

Respuesta muy útil. Un pequeño problema que encontré en la solución: jQuery.validator.addMethod ("numérico" ... debería ser jQuery.validator.addMethod ("number" –

0

La solución incluida en jQuery Validation 1.14.0 soluciona el problema del cero inicial pero deja un problema de signo negativo principal. -.124 no es válido. -0.124 es válido. El RegEx provisto en la publicación anterior parece permitir -.124 por lo que lo prefiero a la solución en jQuery Validation 1.14.0

Cuestiones relacionadas