I have a calculator in html that works with javascript User input its values in one single input field, all in decimal. But for mistake sometimes user types 010 instead 10 and eval gives octa result
Sample 1: eval('20*15+8*10'); Result 380 (Correct)
Sample 2: eval('20*15+8*010'); Result 364 (Wrong)
Is there any other method I can use? or How can I cast all values to decimal before using eval?
Here my code:
function recalcula()
{
var doc=document.forma;
try
{
s_1=0;
for(i=1;i<=9;i++)
{
CorrigeCampo(eval('doc.a1_'+i),0);
abc=eval('doc.a1_'+i+'.value.replace(/,/g,"")');
x_1=parseFloat(eval(abc));
//x_1=parseFloat(eval(abc.replace(/\b0(\d+)\b/g, '$1')));
if((isNaN(x_1))||(x_1==0))
{
x_1=0;
eval('doc.a20_'+i+'.value="";');
eval('doc.a1_'+i+'.value="";');
}
else
eval('doc.a20_'+i+'.value=x_1.toFixed(4);');
s_1+=x_1;
}
doc.Suma_1.value=s_1.toFixed(4);
}
catch(e)
{}
}
function CorrigeCampo(campo,def)
{
cadenanueva="";
valorcampo=campo.value;
carpermitidos="0123456789.*/-+";
for(j=0;j<valorcampo.length;j++)
{
act=valorcampo.substring(j,j+1);
if(carpermitidos.indexOf(act)>=0)
{
cadenanueva+=act;
}
}
if(cadenanueva=="")
cadenanueva=def;
campo.value=cadenanueva;
}