(början)(ett godtyckligt antal siffror)(noll eller ett kommatecken)(minst en siffra)(slut)
och om det inte är det utföra en viss kod, i det här fallet
return "0,00 kr";
vilket sätter fältet till just "0,00 kr". Om du ändrar den raden till
return "";
får det istället effekten att alla ogiltiga värden får fältet att tömmas, vilket också är en helt rimlig sak att göra. (Även det tomma fältet - som ju är ogiltigt - kommer att tömmas, men detta ändrar ju inte dess värde.) Notera min kommentar "//?", som jag satte för att visa att du kunde ändra detta till något som passade för dig.
Varför har du förresten escapat citattecknena (" -> \")? Det borde inte behövas om du lägger functionen som ett externt script (inom <script>-taggar, eller med <script src="...">).
Hej igen!
Jag hittade en lösning c:a 3,7 sekunder efter att jag postade mitt förra inlägg.
Om man ska tillåta ett tomt fält hur modifierar man ditt script då?
Jag har provat men får inte till det riktigt. Gissar att det är här man ska trixa lite:
if(!(/^\d*,{0,1}\d+$/).test(v)){
Vad exakt gör ovanstående?
Med vänliga hälsningar Lars Lantz
Den här funktionen tror jag borde fungera:
function formatCurrency(v){ v=v.replace(/\./g,','); //Tillåt punkter som kommatecken (engelskans syntax), tex 12.5 -> 12,5 v=v.replace(/ /g,''); //Ignorera mellanslag, tex godkänns " 5 4 , 0 " (54) och "1 200" (1200) if(v.substr(-2)=="kr"){ //Godkänn att ett tal slutar med kr. v=v.substr(0,v.length-2); } if(!(/^\d*,{0,1}\d+$/).test(v)){ //Felaktig indata return "0,00 kr"; //? } var p=v.split(','); if(p[0]==''){ //Godkänn inte engelsk syntax som ",50" return "0,00 kr"; //? } if(p.length==1){ p.push('0'); } var nor=Math.round(100*((p[0]-0)+(('0.'+p[1])-0))); var ipart=Math.floor(nor/100), dstr=(nor%100)+''; if(dstr.length==1)dstr+='0'; var istr='', ap; while(ipart>=1000){ //Ändra while till if om du bara vill ha tusenavgränsare, inte också miljon-, miljard-, etc. som det är just nu ap=(ipart%1000)+''; ap=('000').substr(ap.length)+ap; istr=' '+ap+istr; ipart=Math.floor(ipart/1000); } istr=ipart+istr; var res=istr+','+dstr+' kr'; return res; }
Du får naturligtvis ändra vissa detaljer till hur du vill ha det. Anropa den som onchange="var f=document.getElementById('resmal_pris');f.value=formatCurrency(f.value);"
Simon
Hej!
Jag har ett litet javascriptproblem.
Efter att man knackat in priset ex. 2400 och lämnar inputen så ska ett litet script ändra texten i inputen till 2 400,00 kr.