Vérifiez si le nombre est dans la plage

Je vérifie si mon numéro provenant d’un champ de saisie est dans la plage

function timeCheck(){ var time = $.sortingm($('#enterTime').value()); Number.prototype.between = function(min,max){ return this > min && this < max; }; if ((time).between(1,9)){ alert("test"); } } 

Mais de toute façon cela ne fonctionne pas .. l’alerte n’est jamais déclenchée

Merci pour l’aide et réponse rapide

Pour prolonger la réponse de @ Daniel, il existe deux autres erreurs: premièrement, $('#enterTime').value() n’est pas une fonction jQuery valide, doit être $('#enterTime').val() . Deuxièmement, vous devez convertir votre valeur en type Number . Sinon, vous tenterez d’accéder à la propriété between d’une chaîne, qui n’existe pas. Le code final serait:

 function timeCheck(){ var time = new Number($.sortingm($('#enterTime').val())); Number.prototype.between = function(min,max){ return this > min && this < max; }; if(time.between(1,9)){ alert("test"); } } 

Pas un crochet de fermeture mais une parenthèse manquante:

 if((time).between(1,9){ 

Devrait être:

 if ((time).between(1,9)){ 

ou

 if (time.between(1,9)){ 

FIDDLE Essayer le code suivant

 function timeCheck(){ var time = parseInt($.sortingm($('#enterTime').val()),10); Number.prototype.between = function(min,max){ var num = parseInt(this,10); return num >= min && num <= max; } if((time).between(1,9)){ alert("test"); } } 

Le problème était avec le type d'object de conversion, le temps n'était pas du type Number .

J'espère que ça aide .....

Cette question a déjà été posée: ici

Essayez la fonction que je propose (dans l’article mentionné c’était pour PHP) qui est valable pour des plages croissantes ou décroissantes et non limitée à des entiers:

 function between(n, a, b) { var chk= false; if ((a==n)&&(b==n)){ chk = true; }else{ chk = (na)*(nb)<0; } return chk; } 

La fonction TRUE si n est entre a et b