event.keycode in mozilla

Pagina: 1
Acties:

  • marty
  • Registratie: Augustus 2002
  • Laatst online: 27-03-2023
Ik ben nu al onwijze tijd aan het pielen en het zoeken, maar ik krijg het onderstaande maar niet werkend in mozilla:

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
36
37
38
39
40
41
42
43
44
45
46
 function MonitorFields(id, MaxLength)
 {
    if(document.all)
    {
         //it's IE
        var toets = event.keyCode;
    }
    else if(document.layers)
    {
         //it's netscape
        var toets = evt.which;
    }

//  alert(toets);

     // we only parse the keystroke if it's a number (0-9)
    if ((toets >= 48 && toets <= 57) || (toets >= 96 && toets <= 105))
    {
        if (id < 6)
            var next_id = (parseInt(id) + 1);
        else if (id == 6)
            var next_id = 1;
        var waarde = document.getElementById(id).value;
        if (waarde.length == MaxLength)
        {
            document.getElementById(next_id).focus();
        }
        else if (waarde.length > MaxLength)
        {
            alert('Invalid Value!\nValue can\'t be longer then '+MaxLength+' characters');
            document.getElementById(id).value = waarde.substring(0, MaxLength);
            document.getElementById(id).focus();
        }
    }
    else
    {
        if (toets != 6 && toets != 9 && toets != 16)
        {
             // 6 en 9 zijn de SHIFT- en TABtoest, 16 de combinatie van beide
            var waarde = document.getElementById(id).value;
            var lengte = waarde.length;
            var subLengte = (lengte - 1);
            document.getElementById(id).value = waarde.substring(0, subLengte);
        }
    }
 }


wat het script doet is bijhouden wat je invoert in een input veld. als het aantal tekens daarin gelijk is aan het maximum springt ie door naar het volgende invoerveld en als je iets anders dan een getal invult dan haalt ie dat weer weg.
de shift en tab heb ik in die else een uitzondering voor moeten maken anders haalde die telkens tekens uit invoervelden weg als je met tab of shift tab door de velden ging.

een invoerveld ziet er zo uit:
HTML:
1
<input type="text" id="1" name="dag" size="2" onKeyUp="MonitorFields(this.id, 2);" onFocus="this.select();">


Maar dit wil dus niet in mozilla werken want die kent die event.keyCode niet. Heb ook al window.event.keyCode geprobeerd en evt.which, maar helaas. Hier in de search kon ik het niet vinden en als ik met google ga zoeken vind ik alleen sites die IE en NN vergelijken (waar ik het eerste stukje code mee gevonden heb), of anders alleen de opmerking dat ze het nog niet werkend hebben gekregen in Mozilla. Maar nergens een oplossing.

edit:
sorry: kan een mod ff de topictitel aanpassen. ben er vergeten bij te zetten dat het om javascript gaat

[ Voor 7% gewijzigd door marty op 10-08-2003 20:37 ]


  • André
  • Registratie: Maart 2002
  • Laatst online: 19-08 12:30

André

Analytics dude

JavaScript:
1
2
3
4
function Toets(evt)
{
  alert(evt.keyCode);
}

HTML:
1
<body onkeydown="Toets(event)">

Werkt in Mozilla

  • marty
  • Registratie: Augustus 2002
  • Laatst online: 27-03-2023
aaaahhhhh.....ik moest dus gewoon event aan de functie doorgeven..
ik begrijp hier uit dat IE die als een GLOBAL ziet en Mozilla niet?

btw, is het erg lelijk als ik event in de variabele event stop?
dus dan heb ik m'n functie zo:
function MonitorFields(id, MaxLength, event)

  • André
  • Registratie: Maart 2002
  • Laatst online: 19-08 12:30

André

Analytics dude

marty schreef op 10 augustus 2003 @ 20:55:
aaaahhhhh.....ik moest dus gewoon event aan de functie doorgeven..
ik begrijp hier uit dat IE die als een GLOBAL ziet en Mozilla niet?

btw, is het erg lelijk als ik event in de variabele event stop?
dus dan heb ik m'n functie zo:
function MonitorFields(id, MaxLength, event)
Waarom zou dat lelijk zijn? Als het maar werkt. :)

  • Bosmonster
  • Registratie: Juni 2001
  • Laatst online: 19-08 22:14

Bosmonster

*zucht*

De event-via-attribuut is eigenlijk wat lelijk is. Als je het op de 'normale' manier doet:

onkeyup = toets;

bijvoorbeeld, wordt het event automatisch doorgegeven als argument. Via een tag-attribuut moet je dus ff 'moeilijk' doen.

En een tipje voor de naamgeving:

Object-definities met een Hoofdletter beginnen, functies met een kleine. Zeker in een taal waar je in de code geen verschil ziet (allebei function ...) is een beetje standaardisatie wel handig ;)

[ Voor 34% gewijzigd door Bosmonster op 10-08-2003 23:01 ]