2017-10-08 9 views
0

Je dois trouver un moyen de saisir un séparateur, par exemple, 12 000 sans recevoir de message NaN et, si cela ne peut pas être fait, afficher un message à la place. J'ai regardé à travers divers sites et StackOverflow et ne peux pas trouver comment faire ceci (problème de newbeeee). Code actuel comme suit:Comment utiliser les problèmes d'isNAN et de séparateur

<script language="JavaScript" type="text/javascript"> 
function calcsavings() 

{ 

var B1=document.forms[0].B1.value; 
var B2n = Number("1516"); 
var B2=+B2n + +B1; 
var B4 = Number("0.138"); 

var t; 
for (i=0; i<document.forms[0].ITR.options.length; i++) 

{ 

if (document.forms[0].ITR.options[i].selected) 
t = document.forms[0].ITR.options[i].value; 
} 

var result=(B1/t-(B2/(1+B4)))*t 

result=Math.round(result); 

document.getElementById("childcaresavings").innerHTML=result; 

} 

</script> 

J'ai supprimé le code non-travail que j'ai essayé avant de poster.

+1

't' n'est pas un nombre. – taha

+0

Salut Xufox 5, j'ai visité ce lien, merci, Il n'a pas fonctionné pour le ',' dans par exemple, 10 000 comme NaN est encore retourné :-(Merci pour le conseiller si! – maxballroom

Répondre

0

Y a-t-il un problème avec l'ajout d'une vérification NaN pour result?

result=Math.round(result); 
var htmlContent = Number.isNaN(result) ? "not a valid number" : result; 
document.getElementById("childcaresavings").innerHTML=htmlContent ; 

edit: Si vous cherchez une utilisation occasionnelle de l'analyse syntaxique. Vous pouvez simplement utiliser un replace global qui supprimera tout sauf les nombres et les points.

if (document.forms[0].ITR.options[i].selected) { 
    var inputVal = document.forms[0].ITR.options[i].value; 
    var removedCommas = inputVal.replace(/[,]/g, "") 
    if (removedCommas[0] === "£") { 
    removedCommas = removedCommas.slice(1, removedCommas.length) 
    } 
    t = removedCommas 
} 

Ce que cela fait: Il prend votre entrée et supprime toutes les virgules et £ si elle est le premier caractère de l'entrée. En supposant que votre utilisateur entre une entrée saine, il traitera le nombre comme prévu. Si votre utilisation entre quelque chose de bizarre comme / * & #, etc., NaN sera retourné et votre erreur apparaîtra.

+0

Andrew, Merci, cela a fonctionné absolument parfaitement Idéalement, je voulais pouvoir utiliser £ ou, dans la zone de saisie B1, mais j'avais besoin de cette solution NAN parce que tout ce qui n'était pas un nombre simple avec/sans virgule décimale renvoyait NaN Merci Andrew, cela m'a vraiment aidé. Ne savez même pas s'il existe une solution réalisable au problème, car il semble être soit trop complexe à mettre en œuvre, soit que les solutions ne fonctionnent pas bien. – maxballroom

+0

@maxballroom Pour être clair, vous cherchez à être capable de: entrée £ 120 000. Un nombre qui a une virgule qui sera toujours capable d'être traité correctement comme un nombre? – Andrew

+0

@maxballroom N'a pas attrapé cette partie.Il n'est pas difficile à faire du tout.Mais cela dépend de la façon dont vous le voulez être. Autoriserez-vous des combinaisons incorrectes de virgules et de livres comme «1200,00», «£ 120,000»? Ou est-ce que "120 000 £" sera la seule chose que vous ferez valoir pour être un nombre réel? – Andrew