Avatar billede robson Nybegynder
15. juni 2007 - 10:57 Der er 13 kommentarer og
1 løsning

Valider tal med komma og punktum

Hej

Jeg har følgende javascript funktion til at validere om mit tekstfelt udelukkende indeholder tal:

function tjekTal(tal) {
  regex = /^[0-9]+$/;
  if (tal.match(regex)) return false;
  else return true;
}

Jeg har brug for at den også accepterer komma og punktum i teksten - altså så 1.499,00 er ok.

Er der en ekspert der kan omskrive lidt??
Avatar billede roenving Novice
15. juni 2007 - 12:58 #1
F.eks.

function tjekTal(tal) {
  regex = /^[1-9]+(\.\d{3})*(,\d+)?$/;
  return !!tal.match(regex);
}
Avatar billede robson Nybegynder
15. juni 2007 - 13:30 #2
Det virker delvist fint :)

Punktum på 3 position er på plads, men jeg får ikke lov til fx at skrive 19,50 eller 299,75 - derimod må jeg gerne indtaste 1,25...
Avatar billede roenving Novice
15. juni 2007 - 13:46 #3
Hrm, jeg kan ikke få det til at fejle i nogle af mine browsere !-)
Avatar billede robson Nybegynder
15. juni 2007 - 13:49 #4
hmmm... faktisk opfører den sig lidt mystisk, der er umiddelbart ikke system i hvornår den fejler - nogle gange kan jeg få lov til at skrive 999,75 eller 25,50 andre gange ikke... kan ikke lige gennemskue hvad der sker... fejler den også hos dig?
Avatar billede roenving Novice
15. juni 2007 - 13:49 #5
Den har givet præcis det rigtige svar hver eneste gang ...
Avatar billede roenving Novice
15. juni 2007 - 13:50 #6
Prøv at vis, hvordan du bruger det !o]
Avatar billede robson Nybegynder
15. juni 2007 - 13:51 #7
function tjekTal(tal) {
  regex = /^[1-9]+(\.\d{3})*(,\d+)?$/;
  return !tal.match(regex);
}
   
function afsendelse(form) {   
  if (form.Valuta.value.length > 0) {
    if (tjekTal(form.Valuta.value)) {
      alert("Fejl i indskrivning!");
      form.Valuta.focus();
      form.Valuta.select();
      return false;
    }
  }
}

på formen er der så en onSubmit="return afsendelse(this)"

ændre det på noget...?
Avatar billede roenving Novice
15. juni 2007 - 13:57 #8
Argh, der skal da også tillades 0'er før et evt. tusind-punktum:

  regex = /^[1-9]\d{0,2}(\.\d{3})*(,\d+)?$/;
Avatar billede roenving Novice
15. juni 2007 - 14:03 #9
-- og det skal vel også tillades, at de udelades i større tal, samt at der må stå f.eks. 0,25 !-)

  regex = /^([1-9](\d{0,2}\.\d{3})*|\d|[1-9]\d*)(,\d+)?$/;
Avatar billede robson Nybegynder
15. juni 2007 - 14:12 #10
lige præcis :o)
Det fungerer perfekt! smid et svar roenving!
Avatar billede roenving Novice
15. juni 2007 - 14:48 #11
Velbekomme '-)
Avatar billede roenving Novice
15. juni 2007 - 14:52 #12
Hov, jeg faldt lige over en fejl, hvis der var flere 3-tals-grupper, så tillod den op til 5 tal i alle undtaget den sidste (e.g. 1.22653.888,35 !-), så således:

  regex = /^([1-9]\d{0,2}(\.\d{3})*|\d|[1-9]\d*)(,\d+)?$/;

-- og hvis du vil have egentlig valuta-notation (med to cifre !-), skal afslutningen se således ud:

... (,\d{1,2})?$/; eller ... (,\d{2})?$/;
Avatar billede robson Nybegynder
18. juni 2007 - 08:07 #13
Cool - du styrer for vildt roenving :o)
Tak for hjælpen!
Avatar billede roenving Novice
18. juni 2007 - 14:37 #14
-- og jeg takker for point ;~}
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