2012-03-29 15 views
9

मैं parseFloat के साथ टेक्स्टफील्ड से मूल्य कैसे बंद करूंगा? जब यह क्लिक किया जाता है और टेक्स्टबॉक्स में योग प्रदर्शित करता है तो यह एप्लिकेशन मूल रूप से सभी रेडियो बटनों के मान को जोड़ता है।Jquery/जावास्क्रिप्ट में parseFloat परिणामों को कैसे बंद करें?

रेडियो बटन मान एक पूर्णांक है, तो नीचे दिया गया कोड पूरी तरह से काम करता है, हालांकि यदि मैं रेडियो बटन पर एक फ्लोटिंग पॉइंट मान रखना चाहता हूं, तो कुल मान 100.0000000679 होगा जब यह 100 होना चाहिए। किसी भी सुझाव की बहुत सराहना की जाएगी। अग्रिम में धन्यवाद।

function calcscore(){ 
    var score = 0; 
    $(".calc:checked").each(function(){ 
    score+=parseFloat($(this).val(),10); 
    }); 
    $("input[name=openingsum]").val(score); 
} 
$().ready(function(){ 
    $(".calc").change(function(){ 
     calcscore(); 
    }); 
}); 

एचटीएमएल कोड:

<input class="calc" name="v2" type="radio" onclick="ver2(this);" value="1.6666666666666666666666666666667" />Yes 
<input class="calc" name="v2" type="radio" onclick="ver2(this);" value="0" />No 
+1

मेरा मानना ​​है कि आप अपनी आवश्यकताओं को यह लागू [मिलेगा http : //stackoverflow.com/questions/4640404/parsefloat-rounding] [1] [1]: http://stackoverflow.com/questions/4640404/parsefloat-rounding – djmadscribbler

उत्तर

11

सबसे पहले मैं आप हमें एक अलग उदाहरण तो उम्मीद के साथ प्रदान की है। यदि आप हमें 100.0000000679 प्राप्त करने के बारे में कुछ बताते हैं और आपके कोड में केवल 1.6666666666666666666666666666667 का मान है तो कुछ गलत है :)

इसलिए मुझे आशा है कि आपकी समस्या केवल सही तरीके से घूमने के लिए है। उस के लिए आप उपयोग कर सकते .toFixed()

देखें example on jsfiddle

HTML:

<input class="calc" name="v1" type="radio" onclick="ver2(this);" value="1.6666666666666666666666666666667" />Yes 
<input class="calc" name="v1" type="radio" onclick="ver2(this);" value="0" />No 
<br> 
<input class="calc" name="v2" type="radio" onclick="ver2(this);" value="1.6666666666666666666666666666667" />Yes 
<input class="calc" name="v2" type="radio" onclick="ver2(this);" value="0" />No 
<br> 
<input class="calc" name="v3" type="radio" onclick="ver2(this);" value="1.6666666666666666666666666666667" />Yes 
<input class="calc" name="v3" type="radio" onclick="ver2(this);" value="0" />No 
<br> 
<input type="text" name="openingsum">​ 

JavaScript:

function calcscore(){ 
    var score = 0; 
    $(".calc:checked").each(function(){ 
    score+=parseFloat($(this).val(),10); 
    }); 
    score = score.toFixed(2); 
    $("input[name=openingsum]").val(score); 
} 
$().ready(function(){ 
    $(".calc").change(function(){ 
     calcscore(); 
    }); 
});​ 
+0

Neysor: अपने काम के लिए एक और महत्वपूर्ण योगदान करने के लिए एक बार फिर धन्यवाद। हमेशा की तरह, आप मेरे काम में बहुत ही शीघ्र और प्रमुख योगदानकर्ता रहे हैं। हर बार जब मैं इसे अपने काम में लागू करता हूं तो आपके इनपुट हमेशा एक वाह क्षण होते रहे हैं। आपका समाधान मेरे जैसे अन्य नए लोगों की सिफारिश करने के लायक है। धन्यवाद। –

+0

@ Davinchie_214 कोई समस्या नहीं! मैं यहां लोगों की मदद करने के लिए पंजीकृत हूं। लेकिन जैसा कि मैंने अभी देखा था, djmadscribbler आपको सही संकेत प्रदान करता है। शायद अगली बार जब आप उस पर अधिक नजर डालेंगे। यदि आपके पास था, तो शायद आप यह लिखने की कोशिश कर सकते हैं कि ऐसा करने के दौरान क्या हुआ गलत है :) – Neysor

+0

जिस तरह से नेसर का उपयोग किया गया है, ऊपर दिए गए मान केवल सिमुलेशन उद्देश्यों के लिए हैं। मैं इसका उपयोग इस तरह से करना चाहता हूं ताकि मैं बेहतर तरीके से समझा सकूं कि मैं ऊपर दिए गए प्रश्न के साथ क्या करना चाहता हूं। हालांकि, एक और बात यह है कि कुल स्कोर केवल 99 प्रदर्शित करता है जब 100 को जब मैं parseFloat को parseInt में बदल देता हूं। क्या यह थोड़ा गड़बड़ हो सकता है या मैंने फिर से कुछ गलत किया होगा। लेकिन भ्रमित मत हो, मेरा अब काम कर रहा है सिवाय इसके कि जब मैं इसे पारसी में बदलता हूं, तो प्रोग्राम गलत हो जाता है। इनपुट के लिए धन्यवाद। –

संबंधित मुद्दे