Mam niewielki problem z JS. Otóż mam dwa pola formularza, w które wpisuję liczby 20-to cyfrowe. Następnie do trzeciego pola formularza mam wpisać automatyczną sumę lub też różnicę tych dwóch pól. Wiadomo, muszę te dwa pola sparsować, bo to stringi. I tak też robię, pojawia się jednak problemgdy wpisana liczba jest zbyt duża. Podam przykład:
P1: 00000001
P2: 99999999
S: P2-P1 = 99999998
I to jest ok, ale gdy wpiszę dane:
P1: 00000000000000000001
P2: 99999999999999999999
S: P2-P1 = 100000000000000000000
Czy int nie przechowuje tak dużych liczb?? Czy może przyczyna jest w innym miejscu??
Kod JS:
Kod
function funcSum(nr)
{
var zm1 = parseFloat(document.getElementById("pierwszynumer").value, 10);
var zm2 = parseFloat(document.getElementById("ostatninumer").value, 10);
var zm3 = parseFloat(document.getElementById("iloscrecept").value, 10);
switch(nr)
{
case 1:
{
if(zm1 && zm2) document.getElementById("iloscrecept").value=(zm2-zm1);
else if(zm1 && zm3) document.getElementById("ostatninumer").value=(zm1+zm3);
break;
}
case 2:
{
if(zm1 && zm2) document.getElementById("iloscrecept").value=(zm2-zm1);
else if(zm2 && zm3) document.getElementById("pierwszynumer").value=(zm2-zm3);
break;
}
case 3:
{
if(zm1 && zm3) document.getElementById("ostatninumer").value=(zm1+zm3);
else if(zm2 && zm3) document.getElementById("pierwszynumer").value=(zm2-zm3);
break;
}
}
return true;
}
{
var zm1 = parseFloat(document.getElementById("pierwszynumer").value, 10);
var zm2 = parseFloat(document.getElementById("ostatninumer").value, 10);
var zm3 = parseFloat(document.getElementById("iloscrecept").value, 10);
switch(nr)
{
case 1:
{
if(zm1 && zm2) document.getElementById("iloscrecept").value=(zm2-zm1);
else if(zm1 && zm3) document.getElementById("ostatninumer").value=(zm1+zm3);
break;
}
case 2:
{
if(zm1 && zm2) document.getElementById("iloscrecept").value=(zm2-zm1);
else if(zm2 && zm3) document.getElementById("pierwszynumer").value=(zm2-zm3);
break;
}
case 3:
{
if(zm1 && zm3) document.getElementById("ostatninumer").value=(zm1+zm3);
else if(zm2 && zm3) document.getElementById("pierwszynumer").value=(zm2-zm3);
break;
}
}
return true;
}
Kod XHTML:
Kod
<table>
<tbody>
<tr><td>Pierwszy numer z zakresu</td><td><input type="text" value="" onblur="funcSum(1);" id="pierwszynumer" name="pierwszynumer"/></td></tr>
<tr><td>Ostatni numer z zakresu</td><td><input type="text" value="" onblur="funcSum(2);" id="ostatninumer" name="ostatninumer"/></td></tr>
<tr><td>Ilość recept</td><td><input type="text" value="" onblur="funcSum(3);" id="iloscrecept" name="iloscrecept"/></td></tr>
<tr><td>Nazwa świadczeniobiorcy</td><td><input type="text" value="" name="swiadczeniobiorca"/></td></tr>
<tr><td><input type="submit" value="dalej" name="dalej2"/></td><td/></tr>
</tbody>
</table>
<tbody>
<tr><td>Pierwszy numer z zakresu</td><td><input type="text" value="" onblur="funcSum(1);" id="pierwszynumer" name="pierwszynumer"/></td></tr>
<tr><td>Ostatni numer z zakresu</td><td><input type="text" value="" onblur="funcSum(2);" id="ostatninumer" name="ostatninumer"/></td></tr>
<tr><td>Ilość recept</td><td><input type="text" value="" onblur="funcSum(3);" id="iloscrecept" name="iloscrecept"/></td></tr>
<tr><td>Nazwa świadczeniobiorcy</td><td><input type="text" value="" name="swiadczeniobiorca"/></td></tr>
<tr><td><input type="submit" value="dalej" name="dalej2"/></td><td/></tr>
</tbody>
</table>
Proszę o rady, pomoc, sugestie