Avatar billede dennisbjorn Juniormester
10. september 2012 - 10:55 Der er 12 kommentarer og
1 løsning

Validering af valuta

Jeg bruger nedenstående i forbindelse med validering af et input felt i en form.

Hvordan kan jeg udbygge scriptet, således at det accepterer punktum som tusindtals-separator?




    {
    $Value=document.forms.BrugerForm.cost.value;
    $myRegexp = /^[1-9]\d*(,\d|,\d{2})?$/;
    if (!$myRegexp.test($Value) && (error==0))           
      {       
        alert ('Pris skal angives med 2 decimaler uden bogstaver og tegn - og ingen tusindtals-separator!');
        document.forms.BrugerForm.cost.focus();
        error = 1;       
      }
    }
Avatar billede olsensweb.dk Ekspert
10. september 2012 - 11:26 #1
Avatar billede olebole Juniormester
10. september 2012 - 11:27 #2
<ole>

Den, der har skrevet scriptets alert, mener slet ikke, der må findes en tusindtalsseparator. Prøver I lige at blive enige først?  =)

/mvh
</bole>
Avatar billede claes57 Ekspert
10. september 2012 - 11:30 #3
den første linje - bare fjern dem

$Value=document.forms.BrugerForm.cost.value.replace( /\./g,'' );
Avatar billede olebole Juniormester
10. september 2012 - 11:32 #4
@ronols: #2 var henvendt til spørgeren  *o)

Det sidste spørgsmålstegn i din RegExp skal dog nok slettes, hvis tallet skal angives med 2 decimaler. Jeg er dog ikke helt sikker på, man kan stole på alert'en  =)
Avatar billede olebole Juniormester
10. september 2012 - 11:34 #5
#3: Den kommentar må vist høre til et helt andet spørgsmål  *D
Avatar billede dennisbjorn Juniormester
10. september 2012 - 11:39 #6
svaret fra Ronols giver det ønskede resultat - du må gerne smide et svar.

Alert teksten var tiltænkt det først script - og altså ikke tilrettet til den ønskede ændring.

Tak for hjælpen :-)
Avatar billede olebole Juniormester
10. september 2012 - 12:01 #7
Hehe ... så prisen skal altså ikke, som der står i alert'en, angives med to decimaler  =)
Avatar billede dennisbjorn Juniormester
10. september 2012 - 12:35 #8
Den færdig funktion ser således ud:


function validate_form()
    {
    error = 0;
    {
    $Value=document.forms.BrugerForm.cost.value;
    $myRegexp = /((^\d{1,3}((\.\d{3})?)+(,\d+)?)$)/;
    if (!$myRegexp.test($Value) && (error==0))                                                           
      {       
        alert ('Pris skal skrives med tusindtalsseparator og evt. to decimaler således 0.000,00');       
        document.forms.BrugerForm.cost.focus();
        error = 1;       
      }
    }

   
    if(error == 0)
    document.forms.BrugerForm.submit();
    }
Avatar billede olebole Juniormester
10. september 2012 - 13:15 #9
Du kan spare et par parenteser. Derudover tillader din RegExp over to decimaler. Denne tillader ingen eller præcis to decimaler:

/^\d{1,3}((\.\d{3})?)+(,\d{2})?$/
Avatar billede dennisbjorn Juniormester
10. september 2012 - 13:29 #10
smukt olebole - vil du evt. dele point med @ronols?
Avatar billede olebole Juniormester
10. september 2012 - 13:33 #11
Ellers tak, jeg samler ikke point  =)
Avatar billede dennisbjorn Juniormester
11. september 2012 - 09:19 #12
@ronols; husk svar (=point + lukning)
Avatar billede olsensweb.dk Ekspert
11. september 2012 - 12:36 #13
får du 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