Getypte comma vervangen door punt in inputbox (keycode)

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • Darkprince1234
  • Registratie: Juni 2005
  • Laatst online: 14-08-2021
Ik wilde graag een javascriptje maken waarbij het script een comma omzet naar een punt. Nu lukt dat wel in Internet Explorer, maar in andere browsers geeft hij enkel de alert weer en veranderd er niets. Ik probeer voor Opera, Safari, Firefox en Chrome deze functie ook werkend te krijgen, tot nu toe zonder resultaat.

Ik trigger deze functie met de ONKEYPRESS trigger.

Ik ben er niet zeker van dat ik e.keyCode of e.which goed gebruik. Wie kan mij vertellen waar de fout in zit?

JavaScript:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
function stop_comma(e)
{   
    //Window.event.keycode werkt in Explorer 8.
    if (window.event.keyCode) {
    var key = window.event.keyCode;
        alert('Windows.event in gebruik');
        if(window.event.keyCode =="44")
        {
        window.event.keyCode = "46";
        }
    } 
    //Einde dit werkt in Explorer 8.
    
    if (e.keyCode) {
    var key = e.keyCode;
        alert('E.keycode in gebruik');
        /*if(e.keyCode =="44")
        {
        e.keyCode = "46";
        }*/
    }
    
    if (e.which) {
    var key = e.which;
        alert('E.which in gebruik');
        if(e.which =="44")
        {
        e.which = "46";
        }
    }
    
    alert('You pressed the key: ' + String.fromCharCode(key));


}

[ Voor 6% gewijzigd door MueR op 31-03-2010 09:56 . Reden: code tags toegevoegd ]


Acties:
  • 0 Henk 'm!

  • Aganim
  • Registratie: Oktober 2006
  • Laatst online: 19:31

Aganim

I have a cunning plan..

Het is voor mij te laat om hier nog naar te kijken, sorry. Maar even een tip: zet je code tussen de [code] tags, bijv [code=javascript] in dit geval en laat je code inspringen, zodat de if-structuren duidelijker te volgen zijn. Dat vergroot de leesbaarheid enorm. Wel zo makkelijk, mocht je nog eens hulp bij grotere scripts willen hebben.

Acties:
  • 0 Henk 'm!

  • Manuel
  • Registratie: Maart 2008
  • Laatst online: 17-09 14:28
Dit kan in eerste instantie al heel wat korter en ook veel mooier. Verder voeg even de code tag toe aan je post.

JavaScript:
1
2
3
4
5
6
7
8
9
10
11
//e = event dan zeker... Maar wat wil je replacen? Hoe wil je nou e.which vervangen..
function replaceCommaWithDot(e)
{
       var a = (e.keyCode) ? e.keyCode : e.which;

       if(e.which == 188) {
             alert('Je gebruikt nu een komma?');
       } else if(e.which == 190) {
              alert('Dit is een punt.. Het vervangen is up 2 you ;)');
       }
}

Acties:
  • 0 Henk 'm!

  • Cartman!
  • Registratie: April 2000
  • Niet online
Je denkt veel te moeilijk, na een keyup pak je de input en vervang je komma's door punten, klaar.

Acties:
  • 0 Henk 'm!

  • pieturp
  • Registratie: April 2004
  • Laatst online: 15:56

pieturp

gaffa!

...en blur en submit ;)

Misschien vergeet ik 'r nog één. 't Is al laat...

... en etcetera en zo


Acties:
  • 0 Henk 'm!

  • moozzuzz
  • Registratie: Januari 2005
  • Niet online
Als je het nadien naar een server zwiept kan je het ook gewoon daar replacen met ASP, PHP, ...

Acties:
  • 0 Henk 'm!

  • Bosmonster
  • Registratie: Juni 2001
  • Laatst online: 16:28
Waarom zou je komma's vervangen door punten overigens? Ik neem even aan dat het gaat om amerikaanse/europese schrijfwijze van grote getallen en decimalen?

Dit zou ik niet clientside oplossen, maar serverside, anders wordt het erg verwarrend voor gebruikers.

Acties:
  • 0 Henk 'm!

  • RaZ
  • Registratie: November 2000
  • Niet online

RaZ

Funky Cold Medina

Eensch met Bosmonster.

Gewoon serverside oplossen, de user merkt daar niets van, en jij hebt de data zoals je wil. Een simpele replace na de submit, en je hebt wat je wil.

Ik zou raar staat te kijken als ik een komma in een veld tik wat een punt blijkt te worden. Niet dat ik direct naar de winkel race, maar toch..

Ey!! Macarena \o/


Acties:
  • 0 Henk 'm!

  • Darkprince1234
  • Registratie: Juni 2005
  • Laatst online: 14-08-2021
Het idee er achter is dat mensen een verschillende notatie hebben voor duizendtal scheiding en decimaaltekens. Om dus te voorkomen dat men 1,000.00 intypt wil ik dat als men de komma typt er OF niets gebeurd, OF dat deze automatisch een punt word.

In IE8 kun je dat doen met:
JavaScript:
1
2
3
4
5
6
if (window.event.keyCode) {
        if(window.event.keyCode == 44)
        {
        window.event.keyCode = 46;
        }
}


Nu werkt dit helemaal niet in andere browsers. Firefox, Chrome, Opera en Safari worden niet koud of warm van dit script. Mijn vraag is dan, hoe moet ik e.which toepassen zodat ook andere browsers de comma vervangen door een punt.

@Manual

JavaScript:
1
2
3
4
5
  if(e.which == 188) { 
             alert('Je gebruikt nu een komma?'); 
       } else if(e.which == 190) { 
              alert('Dit is een punt.. Het vervangen is up 2 you ;)'); 
       } 


Hoe kan ik dit nu gebruiken dan? Als ik dit stukje code toepas:

JavaScript:
1
2
3
4
5
6
7
8
9
10
11
12
13
if (window.event.keyCode) {
        if(window.event.keyCode == 44)
        {
        window.event.keyCode = 46;
        }
} else {

 if(e.which == 188) { 
             alert('Je gebruikt nu een komma?'); 
       } else if(e.which == 190) { 
              alert('Dit is een punt.. Het vervangen is up 2 you ;)'); 
       } 
}


dan reageert firefox helemaal nergens op als ik een punt of comma typ... wat zou mis kunnen zijn?

Acties:
  • 0 Henk 'm!

  • Tharulerz
  • Registratie: April 2009
  • Laatst online: 10-04 05:16
Wie typt er 1,000.00 of 1.000,00 in een tekstvak? Beroepsmisvormde boekhouders? (no offense naar boekhouders)

Ga er gewoon van uit dat de eindgebruiker altijd ofwel 1000.00 ofwel 1000,00 zal typen, en vervang daarna serverside de komma door een punt, en alles is opgelost?

Acties:
  • 0 Henk 'm!

  • Bosmonster
  • Registratie: Juni 2001
  • Laatst online: 16:28
Maar hoe weet je wat men intypt? En of je van komma's punten moet maken of vice versa?

Daarnaast blijft het zo dat als je dit realtime gaat vervangen dat erg verwarrend gaat zijn voor de gebruiker. Die typt het namelijk niet voor niets zo in, dat is voor hem of haar de natuurlijke schrijfwijze.

Als je er dus al iets mee doet, doe het dan achteraf en niet direct bij het invoeren.

Acties:
  • 0 Henk 'm!

  • RaZ
  • Registratie: November 2000
  • Niet online

RaZ

Funky Cold Medina

Darkprince1234 schreef op woensdag 31 maart 2010 @ 14:07:
Het idee er achter is dat mensen een verschillende notatie hebben voor duizendtal scheiding en decimaaltekens. Om dus te voorkomen dat men 1,000.00 intypt wil ik dat als men de komma typt er OF niets gebeurd, OF dat deze automatisch een punt word.
[..]
Dan krijg je een verkeerde notitie. Want in Nederland komen decimalen NA de komma. Maar jij vervangt alle komma's door punten. Dus ook een gewone Nederlandse notitie ga je verminking. Want van 10.000,00 wordt dan ook 10.000.00, en daar klopt niets van.

Als je dit toch wil doen, moet je het gewoon server-side doen. Want je vertrouwd op JavaScript, en dat kan je in elke browser uitzetten. Daardoor krijg je dan alsnog de data niet zoals jij het wil hebben.

Ey!! Macarena \o/


Acties:
  • 0 Henk 'm!

  • HuHu
  • Registratie: Maart 2005
  • Niet online
Al die key-events gaan sowieso in de mist als je maar 1 teken gaat vervangen. Als je het bedrag copy-paste vanuit een andere applicatie heb je maar 1 key-event (die van de ctrl of de v). Nog erger: als je het bedrag sleept van het ene tekstveld naar het andere heb je überhaupt geen key-event.
Pagina: 1