2012-05-28 1 views
10

Ho un modulo e sto utilizzando il plugin di convalida jQuery per convalidarlo. Ora sto provando a convalidare l'immissione del numero decimale.Convalida dei numeri decimali

Ho provato il seguente codice, ma non funziona. Il problema con l'espressione regolare o il modo di scrivere la regola personalizzata è sbagliato nel mio codice?

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

    } 
    }, 

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

    } 
}); 
+0

_ "ma non funziona" _ puoi elaborarne altri per favore? – gdoron

+0

stai utilizzando una regola personalizzata per un motivo specifico? C'è già una regola numero nella libreria di validazione. – dSquared

+0

@gdoron. Non mostra alcun messaggio di errore se digito alfabeti nell'input. –

risposta

12

È possibile utilizzare il metodo di validazione numero trovato here

Dalla documentazione:

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

Nel tuo caso:

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

Sto facendo esattamente la stessa cosa ma .01 non passa. Qualche idea sul perché? –

+0

@Mike_OBrien Ho appena controllato un modulo locale e funziona come previsto. Potrebbe essere qualcosa con altre regole/funzioni nel codice. Dovrei vedere il codice relavent per suggerire una risposta. Potrebbe essere utile postare questo come domande con il codice. – dSquared

+0

domanda posta [qui] (http://stackoverflow.com/questions/12395552/jquery-validation-01-failing) –

3

Non ho dimestichezza con il plugin validatore jquery, mi spiace, ma la tua espressione regolare è valida.

un altro approccio sarebbe

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

Il tuo problema è con il metodo 'rexg'. Dovresti usare 'pattern'. Esempio:

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

jQuery validator supporta anche la convalida decimale utilizzando il metodo intervallo.

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

Leggi tutto here e demo qui.