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??
Annonceindlæg fra Kingston Technology
F.eks. function tjekTal(tal) { regex = /^[1-9]+(\.\d{3})*(,\d+)?$/; return !!tal.match(regex); }
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...
Hrm, jeg kan ikke få det til at fejle i nogle af mine browsere !-)
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?
Den har givet præcis det rigtige svar hver eneste gang ...
Prøv at vis, hvordan du bruger det !o]
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...?
Argh, der skal da også tillades 0'er før et evt. tusind-punktum: regex = /^[1-9]\d{0,2}(\.\d{3})*(,\d+)?$/;
-- 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+)?$/;
15. juni 2007 - 14:12
#10
lige præcis :o) Det fungerer perfekt! smid et svar roenving!
15. juni 2007 - 14:48
#11
Velbekomme '-)
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})?$/;
18. juni 2007 - 08:07
#13
Cool - du styrer for vildt roenving :o) Tak for hjælpen!
18. juni 2007 - 14:37
#14
-- og jeg takker for point ;~}
Vi tilbyder markedets bedste kurser inden for webudvikling