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