Mika: seltsamer Logikfehler bei If-Verzweigung?

Hallo Zusammen,

ich habe folgende Funktion, die nichts anderes tun soll, als den Focus auf das nächste Formularelement (z.B ein Textfeld) zu setzen.
Die Funktion wird über den Eventhandler "onkeyup" aufgerufen...

Funktioniert auch alles wunderbar. Nun wollte ich du Funktion so erweitern, das der Inhalt der Funktion nur dann ausgeführt wird,
wenn KEINE Pfeiltasten gedrückt wurden.

Der Wert der ensprechend gedrückten Taste, wird in der Variable "getKeyCode" gespeichert.

Mein einziges Problem liegt in der ersten If-Verzweigung:
"if(getKeyCode != 37 || getKeyCode!= 39){..."

wenn ich nur eine Bedingung (z.B. "getKeyCode != 37" für die linke Pfeiltaste) angebe, und dann im Browser die linke Pfeiltaste drücke, führt er die Anweisungen innerhalb der If-Verzweigung nicht mehr aus. Genau so sollte es auch sein!
Gebe ich allerdings 2 oder mehr Bedingungen für die restlichen Pfeiltasten an, führt er den Inhalt der If-Verzweigung trotzdem aus...

Woran liegt das??? Habe ich vielleicht einen Denkfehler???

function jumpToNextField(){
  Ereignis = window.event;
  getKeyCode = Ereignis.keyCode;

if(getKeyCode != 37 || getKeyCode!= 39){
    id_end = this.id.length;
    id_end--;

id_start = this.id.length;
    id_start--;

if(id_extension == 1){id_start--;}

index = this.id.substr(id_start, id_end);

if(this.id == "pr_number" && this.value.length == 4){
      newSelect.focus();
    }
    else if(this.id == "artnr"+index && this.value.length == 6){
      document.getElementById("groesse"+index).focus();
    }
  }
}

Viele Grüße

Mika

  1. Hello,

    "if(getKeyCode != 37 || getKeyCode!= 39){..."

    Logikfehler deinerseits:
    Nehmen wir mal an, du hast die linke Pfeiltaste gedrückt (ist das die 37? egal, nehmen wir es mal an). Dann sagt die erste Bedingung: ich bin falsch, weil der Keycode nicht ungleich 37 ist. Dann kommt die zweite Bedingung und sagt "ich bin wahr", weil der Keycode nicht 39 ist (er ist ja 37). Damit ist eine von beiden Wahr und das Oder sagt "ich bin auch wahr".

    Vermutlich suchst du ein && oder möchtest dein Konstrukt umbauen.

    MfG
    Rouven

    --
    -------------------
    Inter Arma Enim Silent Leges  --  Cicero
    1. Hi,

      Logikfehler deinerseits:

      ja du hattest recht, kling mit deinen Worten auch sehr einleuchtend:-)

      ich hatte es intuitiv auch mal mit && versucht, bevor ich diesen Beitrag gepostet hab. Da hat es aber nicht funktioniert, war wohl wieder mal ein Cache-Problem....

      Jedenfalls funktioniert es jetzt wurnderbar.

      Vielen Dank!

      Gruß Mika

  2. Hallo Mika,

    es soll doch so sein, dass weder Pfeil-Rechts noch Pfeil-Links verwendet werden dürfen? Dann würde ich statt des || ein && vorschlagen...

    Gruß,
    Manu