Longue histoire courte, j'essayais de valider un champ de téléphone. J'ai ajouté
le ceci ci-dessous ne valide jamais à true..que suis-je Manquer? P> isnan code> et
parseint code> pour la vérification du
"" code> dans le champ mais que dit
if(isNaN(parseInt(phone))){
error.text("Sorry but this phone field requires numbers only");
return false;
} else {
return true;
}
4 Réponses :
Heureusement, vous pouvez probablement résoudre votre cas avec: p> parseint code> est un peu impair parfois:
parseint ne renvoie que NAN si le premier caractère ne peut pas être converti en un numéro. P>
https://developer.mozilla.org/fr/javaScript/javaScript/javaScript Global_objects / parseint p>
Différentes façons de cooler JS Strings à des chiffres et de leurs conséquences: P>
J'utilise personnellement edit fort>: basé sur votre commentaire, si vous utilisez Chaque fois que vous faites Pour les entrées de formulaire, vous devez obtenir le
(source: phrogz.net ) sub> p>
* 1 code> 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 () code> quand je savez em> 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 . P>
téléphone.val () code> corrigé alors p>
var foo = $ ('...'); code> the
FOO code> 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]; code> ou
var fooel = foo.get (0); code> ... mais même alors vous < em> toujours em> avoir un élément dom et non une propriété particulière de cela. P>
.Value code> de l'élément DOM, qui est ce que la méthode jQuery
.val () code> est. P>
J'ai vu p> 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:
function hasNonDigit(str){
return /\D/g.test(str.toString());
}
console.log(hasNonDigit("123-456-7890"));
console.log(hasNonDigit("1234567890"));
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 i> que
téléphone code> est une référence d'élément d'entrée HTML au lieu du
.value code> 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