7
votes

Paysint retourne toujours Nan?

Longue histoire courte, j'essayais de valider un champ de téléphone. J'ai ajouté le isnan code> et parseint code> pour la vérification du "" code> dans le champ mais que dit

ceci ci-dessous ne valide jamais à true..que suis-je Manquer? P>

if(isNaN(parseInt(phone))){
        error.text("Sorry but this phone field requires numbers only");
        return false;
    } else {
    return true;

    }


8 commentaires

Travaille pour moi, par exemple avec téléphone = "5". Quelles sont vos valeurs d'entrée de test?


Ouais désolé, je testez des vals d'entrée d'un formulaire


Vous devriez également inclure votre HTML dans la question. Cela pourrait nous aider à le déboguer.


-1 Pour ne pas inclure les valeurs réelles que vous testez. Je suis devine que téléphone est une référence d'élément d'entrée HTML au lieu du .value de celui-ci.


Mais quel numéro avez-vous entré qui a donné l'erreur au lieu de vrai?


Je me demande si un DOMNODE est évalué plutôt que la valeur de la forme -, ce qui ne redevient jamais vrai, car Parset sur un objet ne sera toujours pas un nombre.


lols @ phrogz ... merci ... j'ai édité la poste. @ Bergi, j'ai d'abord séduit le formulaire pour tester le "" puis des nombres aléatoires dactylographiés, puis des lettres et elle me jette toujours l'erreur MSSG


@webnesto Yep vous avez été correct, je pensais en quelque sorte qu'à donner le nom du champ un identifiant le résoudrait, mais cela n'a pas fait. comme il l'a traité comme un "objet" entier, donc je l'ai changé si (Isnan (parseint (téléphone.val ()))) et ça marche maintenant


4 Réponses :


10
votes

parseint est un peu impair parfois: xxx

Heureusement, vous pouvez probablement résoudre votre cas avec: xxx


0 commentaires

9
votes

parseint ne renvoie que NAN si le premier caractère ne peut pas être converti en un numéro.

https://developer.mozilla.org/fr/javaScript/javaScript/javaScript Global_objects / parseint


0 commentaires

14
votes

Différentes façons de cooler JS Strings à des chiffres et de leurs conséquences:

 résulte de la conversion de différentes chaînes en utilisant les techniques ci-dessus
(source: phrogz.net )

J'utilise personnellement * 1 car il est court à taper, mais se distingue toujours (contrairement à l'Unaire +) et me donne l'un ou l'autre que l'utilisateur saisit ou échoue complètement. J'utilise seulement parseint () quand je savez qu'il y aura du contenu non numérique à la fin pour ignorer, ou lorsque j'ai besoin d'analyser une chaîne non de base-10 .

edit : basé sur votre commentaire, si vous utilisez téléphone.val () corrigé alors

  1. vous utilisiez JQuery (que vous n'avez jamais mentionné, et devrait avoir) et
  2. Vous avez réellement eu / avoir un objet JQuery, enveloppant un ou plusieurs éléments DOM (probablement un).

    Chaque fois que vous faites var foo = $ ('...'); the FOO La variable fait référence à un objet JQUERY d'un ou de plusieurs éléments. Vous pouvez obtenir le premier élément DOM réel de ceci via var fooel = foo [0]; ou var fooel = foo.get (0); ... mais même alors vous < em> toujours avoir un élément dom et non une propriété particulière de cela.

    Pour les entrées de formulaire, vous devez obtenir le .Value de l'élément DOM, qui est ce que la méthode jQuery .val () est.


0 commentaires

0
votes

J'ai vu numéro () code> suggéré, mais cela permettra toujours des choses comme -21 code> ou 123.456 code>. La meilleure façon de vérifier que l'absence de non-chiffres dans une chaîne est comme celle-ci:

p>

function hasNonDigit(str){
  return /\D/g.test(str.toString());
}

console.log(hasNonDigit("123-456-7890"));
console.log(hasNonDigit("1234567890"));


0 commentaires