Avatar billede danic Nybegynder
09. marts 2007 - 23:06 Der er 9 kommentarer og
1 løsning

onkeyup kun tal og punktum

Jeg har denne onkeyup som oversætter komma til punktum, jeg ønsker så denne funktionalitet beholdes, men at den udvides så man kun kan taste tal i input (inkl. komma og punktum)

onkeyup="if(this.value.indexOf(',')!=-1)this.value=this.value.replace(/,/g,'.');"
Avatar billede webudvikleren Nybegynder
09. marts 2007 - 23:22 #1
Er stadig ny indenfor regexp, men prøv dette - er dog ikke sikker på det med punktommet og kommaet midt i regexp'en:

if ( this.value.match(/^[1-9,.]+$/i)){
var nyt = this.value.replace(".",",");
alert(nyt);
} else {
alert("fejl");
}
Avatar billede roenving Novice
10. marts 2007 - 00:38 #2
-- nu er nuller vel også ofte forekommende i almindelige tal, så den skal i hvert fald se anderledes ud, f.eks.

onkeyup="this.value=this.value.replace(/,/,'.').replace(/[^.\d]/,'');"

-- men jeg ville kalde den irriterende !-)
Avatar billede elskermad.dk Nybegynder
10. marts 2007 - 10:51 #3
skal begge , escapes i første replace roenving?
Avatar billede roenving Novice
10. marts 2007 - 14:31 #4
-- de er ikke escapet, det er bare eet komma, der er i en regexp !-)
Avatar billede elskermad.dk Nybegynder
10. marts 2007 - 15:22 #5
argh ja, selvfølgelig :)
Avatar billede danic Nybegynder
10. marts 2007 - 20:01 #6
Super..... i må gerne begge komme med et svar!
Avatar billede roenving Novice
10. marts 2007 - 23:03 #7
Velbekomme '-)
Avatar billede roenving Novice
10. marts 2007 - 23:05 #8
PS. I den, du starter med, har du en overflødig if-sætning, for du kan simpelthen udskifte kommaer med punktummer, er der ingen, vil der ingenting ske !-)
Avatar billede jhe-ting Nybegynder
11. marts 2007 - 09:32 #9
Den metode du bruger har en uheldig side-effekt: Når 'value'-attributten ændres på et inputfelt skiftes cursoren til enden at strengen. Ret ubehageligt :-|

Bedre funktionalitet kan opnås med et key-filter:

<script type="text/javascript">
function filterDecOnly(evt){
    var key = evt ? evt.charCode : event.keyCode;
    if (key == 188) key=190;
    return ((evt && !evt.charCode)||
            (key==13 || key==27 || key==190)||
            (key>=48 && key<=58) )
}
document.getElementById("element")["onkeydown"]=filterDecOnly
</script>

JHe :o)
Avatar billede jhe-ting Nybegynder
11. marts 2007 - 09:39 #10
PS: Tilføj:

    if (evt) evt.charCode = key; else event.keyCode = key;

for at føre rettelsen af tastekoden tilbage.
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

IT-JOB

Styrelsen for Grøn Arealomlægning og Vandmiljø

Teamleder til Application Management

Lægemiddelstyrelsen

Løsningsarkitekt

KMD A/S

E2E Tester