2012-05-28 17 views
10

Tengo un formulario y estoy usando el complemento de validación de jQuery para validarlo. Ahora estoy tratando de validar la entrada del número decimal.Validación de números decimales

He intentado con el siguiente código, pero no funciona. ¿El problema con la expresión regular o la forma de escribir la regla personalizada es incorrecto en mi código?

rules: { 
     paid_amount: { 
       required:true, 
         rexp: ^[1-9]\d*(\.\d+)?$ 
     }, 

    } 
    }, 

messages: { 
      paid_amount: { 
         required: "Enter Paid Amount", 
       rexp:"Decimal Numbers Only" 
    }, 

    } 
}); 
+0

_ "pero no funciona" _ ¿puede dar más detalles, por favor? – gdoron

+0

¿está utilizando una regla personalizada por una razón específica? Ya hay una regla numérica en la biblioteca de validación. – dSquared

+0

@gdoron. No muestra ningún mensaje de error si escribo alfabetos en la entrada. –

Respuesta

12

Usted puede utilizar el método de validación del número encontró here

A partir de los documentos:

$("#myform").validate({ 
    rules: { 
    field: { 
     required: true, 
     number: true 
    } 
    } 
}); 

En su caso:

rules: { 
    paid_amount: { 
     required:true, 
     number: true 
    } 
}, 
messages: { 
    paid_amount: { 
     required: "Enter Paid Amount", 
     number: "Decimal Numbers Only" 
    } 
} 
+0

Estoy haciendo exactamente lo mismo pero .01 no pasa. ¿Alguna idea de por qué? –

+0

@Mike_OBrien Acabo de verificar en un formulario local y funciona como se esperaba. Podría ser algo con otras reglas/funciones en tu código. Tendría que ver el código relavent para sugerir una respuesta. Puede valer la pena publicar esto como una pregunta con el código. – dSquared

+0

pregunta planteada [aquí] (http://stackoverflow.com/questions/12395552/jquery-validation-01-failing) –

3

No estoy familiarizado con el complemento del validador de jquery, lo siento pero su expresión regular es válida.

otro enfoque sería

var reg = "/^[1-9]\d*(\.\d+)?$/"; //reg pattern<br/> 
if(reg.test("1.23"))//validate 
{ 
//do something <br/> 
} 
0

Su problema es con el método 'rexg'. Deberías usar 'patrón'. Ejemplo:

paid_amount: { 
    required:true, 
    pattern: ^[1-9]\d*(\.\d+)?$ 
} 
2

jQuery El validador también admite la validación decimal utilizando el método de rango.

factor: 
     { 
     required: true, 
     range:[0.08,20.09] 
     }, 

Leer más here y demo aquí.

Cuestiones relacionadas