Avatar billede jjdk Nybegynder
17. februar 2006 - 18:40 Der er 5 kommentarer og
2 løsninger

Validering af beløbsfelt, MySql og PHP

Jeg har en form, hvor der indtastes nogle beløb. Jeg vil gerne sikre mig, at der indtastes med korrekt dansk format - altså med punktum som tusindtalsseparator og komma til decimaler. (hvis der ikke indtastes tusindtalsseparator, må den gerne blive sat), når der springes til næste felt.
Tallene skal så gemmes i Mysql, men det er vel med engelsk formatering, da der skal regnes på tallene.
Endelig skal tallene vises i et udtræk med dansk format. Udtrækket er lavet i PHP.
Nogen der har en opskrift?? Skal I se koden??
Avatar billede tjp Mester
18. februar 2006 - 02:37 #1
Nedenstående løser første del af dit problem. Kald 'validateNumber' med talstrengen der skal tjekkes; hvis tallet er korrekt returneres dette, evt. tilføjet tusindtalsseparatorer, ellers kastes en fejl som du så kan fange med en 'try-catch':

function validateNumber(str)
{
  var re0 = new RegExp("^([0-9]{0,3})((\\.[0-9]{3})*)(,\\d+)?$","i");
  var re1 = new RegExp("^([0-9]{0,3})(([0-9]{3})*)(,\\d+)?$","i");
  var arr;
  if (arr = re0.exec(str)){
    return arr[0];
  }
  else {
    if (arr = re1.exec(str)){
      return arr[1]+"."+insertDots(arr[2])+arr[4];
    }
    else {
      throw "Invalid number";
    }
  }
}   

function insertDots(str){
  var newStr = "";
  while (str.length>3){
    newStr += str.substr(0,3)+"."
    str = str.substr(3)
  }
  newStr += str;
  return newStr;
}
Avatar billede roenving Novice
18. februar 2006 - 13:41 #2
-- og jeg så en fiks løsning til indsættelse af 1000-separatorer for nogle år siden:

var tal = "321321,35";
tal = tal.split(",");
tal[0] = tal[0].split("").reverse().join("");
tal[0] = tal[0].replace(/(\d{3})/g,"$1.").replace(/\.$/,"");
tal[0] = tal[0].split("").reverse().join("");
return tal.join(",");
Avatar billede jjdk Nybegynder
30. juli 2006 - 19:54 #3
Ups - denne her er smuttet for mig.
Jeg har klaret sagen med "replace" kommandoen og lidt inspiration fra jer.
Kan ikke begge sende et svar - så fordeler jeg point mellem jer.
På forhånd tak for inspirationen.
Avatar billede roenving Novice
03. august 2006 - 12:06 #4
Oki '-)
Avatar billede tjp Mester
10. august 2006 - 21:35 #5
Doki ;-)
Avatar billede roenving Novice
17. august 2006 - 16:56 #6
-- og tak for point ;~}
Avatar billede tjp Mester
17. august 2006 - 23:01 #7
Ditto her ;-)
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