2010-10-15 4 views
1

Je souhaite une validation numérique par javascript pour le champ des marques. Les marques entrées doivent être sur 5, ce qui signifie que l'utilisateur peut entrer jusqu'à 5 marques au plus. marques peuvent être en décimal comme 4,25 après la virgule il devrait y avoir 2 chiffres peut me aider ..Valeurs numériques Validation du champ

Répondre

1

La façon la plus simple est probablement value.toString().match(/^[0-5](\.\d{1,2})?$/). Généralement, vous voulez éviter les expressions régulières, mais cela vous évitera plusieurs étapes par ailleurs exhaustives pour valider le format du nombre.

+0

La réponse de Shanbin Shanbhag est une meilleure idée. – mway

1

Vérifiez ce code -

if(Number(str) < 0 || Number(str).toFixed(2) > 5) { 
    //Throw error 
} 

str est votre valeur à valider.

0

Mark: <input type="text" id="mark" onBlur="validateMark()">

function validateMark() { 
    var val = document.getElementById('mark').value; 
    if (!val.match(/^[0-5](\.\d{1,2})?$/)) { 
     alert("Invalid mark: " + val); 
    } 
} 
0

longueur du champ d'entrée

Vous pouvez définir la longueur maximale du champ d'entrée comme celui-ci:

<input type="text" maxlength="5" placeholder="12345" /> 

Ou, si vous voulez avoir max 5 caractères, 1 séparateur, ET 2 décimales:

<input type="text" maxlength="8" placeholder="12345.12" /> 

Les validations javascript:

La solution rapide (permet par virgules + points, maxlength = 5)

var value = "15,5"; 
if(!isNaN(parseFloat(value)) && value.length <= 5) { 
    console.log('valid, continue'); 
} 

Si vous voulez seulement permettre des points, ajoutez un contrôle supplémentaire 'isFinite'

var value = "145.5"; 
if(!isNaN(parseFloat(value)) && isFinite(value) && value.length <= 5) { 
    console.log('valid, continue'); 
} 

--- NOTEZ ce qui suit! ---

Si vous voulez dire que seulement les premiers chiffres (non compris les décimales!) Peuvent avoir un maxlength 5, puis oublier ce qui précède.

Vous voulez d'abord vérifier si l'entrée est numérique, puis forcer les deux chiffres. Enfin, vous pouvez vérifier si la longueur est inférieure ou égale à 8 (5 chiffres + 1 séparateur + 2 décimales = 8)

var value = "12345.58852"; // Input field (string) 

if(!isNaN(parseFloat(value)) && isFinite(value) && parseFloat(value).toFixed(2).length <= 8) { 
    console.log('valid, continue'); 
} 

Pour le rendre complet, est une fonction ici pour vérifier si une variable est numérique

(test: http://jsfiddle.net/web_nfo/CBKwA/)

function isNumeric(value, strict) 
{ 
    var strict = (typeof strict == 'undefined' ? false : (strict == true ? true : false)); 
    if(strict && typeof value != 'number') { 
     return false; 
    } 
    return !isNaN(parseFloat(value)) && isFinite(value); 
} 

Si vous incluez la fonction vous pouvez réécrire la dernière vérification comme ceci:

if(isNumeric(value) && parseFloat(value).toFixed(2).length <= 8) { 
    console.log('valid, continue'); 
} 
Questions connexes