2010-09-21 6 views
0

J'ai un peu de javascript qui multiplie dynamiquement ce que les utilisateurs tapent dans un champ de texte (par la base var), et l'affiche dans un span. Maintenant j'essaie juste de comprendre comment faire pour que les décimales du résultat flottent à 2 endroits, soit 10,00 au lieu de 10 J'ai trouvé la fonction toFixed, mais je n'arrive pas à l'utiliser correctement ... I ' d apprécie toute aide. Mercijavascript flottant décimal

<input id="quantity"> 
<span id="result"></span> 
<script> 

window.onload = function() { 
    var base = 3; 
    document.getElementById('quantity').onkeyup = function() { 
     if(this.value.length == 0) { 
     document.getElementById('result').innerHTML = ''; 
     return; 
     } 
     var number = parseInt(this.value); 
     if(isNaN(number)) return; 
     document.getElementById('result').innerHTML = number * base; 
    }; 
    document.getElementById('quantity').onkeyup(); 
}; 
+0

Êtes-vous sûr de vouloir utiliser ici 'parseInt'? Il va '4,21' en '4'. Ainsi, l'utilisateur sera informé que 4.21 * 3 = 12.00, ce qui n'est pas le cas. 'parseFloat' donnera une valeur en virgule flottante. –

Répondre

1
window.onload = function() { 
var base = 3; 
document.getElementById('quantity').onkeyup = function() { 
    if(this.value.length == 0) { 
    document.getElementById('result').innerHTML = ''; 
    return; 
    }  
    if(isNaN(this.value)) 
    return; 
    var number = parseFloat(this.value); 
    var result = (number * base).toFixed(2); 
    document.getElementById('result').innerHTML = result; 
    }; 
    document.getElementById('quantity').onkeyup(); 
}; 
+0

Juste ce dont j'avais besoin! Merci! – RobHardgood

+0

Premièrement, pouvez-vous changer 'parseInt' en' parseFloat', car il est peu probable que le demandeur souhaite un nombre entier multiplié par 2dp. Aussi, il pourrait être plus clair d'avoir 'var result = (nombre * base) .toFixed (2);' (en l'exprimant dans une instruction), ou d'avoir deux variables et avoir 'var préciseResult = nombre * base; var resultat = precisionResult.toFixed (2); '. –

+0

@Phil Fait .. Merci de le signaler. –