Avatar billede ncp Nybegynder
11. oktober 2004 - 00:24 Der er 4 kommentarer og
1 løsning

Rette tal til decimaltal + fjerne evt. tusinde-sepparatorer

Hi, jeg skal bruge et script, som når jeg forlader et input-felt, lige tjekker indholdet. Indholdet skal være et tal, men der må gerne være . (decimal-separator). Skulle der være blevet skrevet en eller flerer , (tusinde-seperatorer) skal disse fjernes.

Her er et par eks.:
2700 -> 2700.00
2,700 -> 2700.00
2,700.3 -> 2700.30

Kan i føæge mig ? - håber i kan :)
Avatar billede roenving Novice
11. oktober 2004 - 00:26 #1
Hvad hvis brugeren har brugt et almindeligt dansk format ?-)

F.eks. 2.700,30 ?-)
Avatar billede thomashove Nybegynder
11. oktober 2004 - 11:26 #2
<script language="JavaScript">

function dotoo(n) {
  n=Math.round(n*100)/100;
if (n==Math.round(n)) return n + '.00';
else return n+( n*10==Math.round(n*10) ? '0' : '' )


function chk_number(aNumber)

  var tmpNumber;
 
  var seponeloca=aNumber.indexOf(",");
  var septwoloca=aNumber.indexOf(".");

  if (seponeloca==-1 && septwoloca==-1) // ingen af dem fundet
    tmpNumber = aNumber;
 
  else if (seponeloca==-1 && septwoloca!=-1) // "." fundet - bahandl som decimal seperator
    tmpNumber = aNumber;
  else if (seponeloca!=-1 && septwoloca==-1) // "," fundet - bahandl som decimal seperator, erstat med "."
    tmpNumber = aNumber.substring(0,aNumber.indexOf(","))+"."+aNumber.substring(aNumber.indexOf(",")+1,aNumber.length);
  else if (seponeloca!=-1 && septwoloca!=-1) // begge fundet
    {   
        if (septwoloca<seponeloca) // "." er før ","
        {     
          tmpNumber = aNumber.substring(0,aNumber.indexOf("."))+""+aNumber.substring(aNumber.indexOf(".")+1,aNumber.length);  // fjern "."          
          tmpNumber = tmpNumber.substring(0,tmpNumber.indexOf(","))+"."+tmpNumber.substring(tmpNumber.indexOf(",")+1,tmpNumber.length); // erstat "," med "."         
        }
        else // "," er før "."
        {
          tmpNumber = aNumber.substring(0, aNumber.indexOf(",")) + "" +aNumber.substring(aNumber.indexOf(",")+1, aNumber.length);  // fjern ","
        }
    }
  tmpNumber = dotoo(tmpNumber);
  document.MyForm.myNumber.value = tmpNumber;
}
</script>

<form action="test.php" name="MyForm" method="post">

<input type="text" name="myNumber">
<input type="button" onclick="chk_number(document.MyForm.myNumber.value);" value="test" name="test">


</form>
Avatar billede thomashove Nybegynder
11. oktober 2004 - 11:29 #3
som roenving er inde på kan det være svært at tjekke for alle underlige kombinationer som brugeren finder på. Mit bidrag håndterer situationer hvor der findes op til en af hver af tegnene "," og ".". I alle tilfælde regnes der med at den sidste seperator er decimal seperatoren

håber det kan bruges ;-)
Avatar billede roenving Novice
11. oktober 2004 - 16:16 #4
Tjah, måske sådan:

<script language="javascript" type="text/javascript">
function returnProperNumber(val){
  val = val.replace(/^\.|^,|\.$|,$/g,"");
  if(!val.match(/^[\d\.,]+$/))return;
  var k = val.lastIndexOf(","),tmp;
  var p = val.lastIndexOf(".");
  if(k==-1&&p==-1){
    return val + ".00";
  }
  if(k>p){
    val = val.replace(/\./g,"");
    if(val.match(/,\d{3}$/)){
      return val.replace(/,/g,"") + ".00";
    }
    if(val.indexOf(",")==k){
      return (val.replace(/,/,".")+"00").match(/\d+\.\d\d/)[0];
    }
    val = val.replace(/,(\d\d?)$/,"#$1").replace(/,/g,"").replace(/#/,".");
    return (val+"00").match(/\d+,\d\d/)[0];
  }
  val = val.replace(/,/g,"");
  if(val.match(/\.\d{3}$/)){
    return val.replace(/\./g,"") + ".00";
  }
  if(val.indexOf(".")==k){
    return (val+"00").match(/\d+\.\d\d/)[0];
  }
  val = val.replace(/\.(\d\d?)$/,"#$1").replace(/\./g,"").replace(/#/,".");
  return (val+"00").match(/\d+\.\d\d/)[0];
}
</script>
Avatar billede roenving Novice
11. oktober 2004 - 16:19 #5
PS. Hvis du kan snyde den, vil jeg meget gerne have det at vide, den skulle gerne kunne tackle utrolig mange dumheder !-)

-- måske skulle den anden linje i funktionen laves til:

  if(!val.match(/^[\d\.,]+$/))return "0.00";
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester

IT-JOB