Shawn: Submit() durch onkeydown funktioniert bei Mozilla nicht

Hallo Leute,

ich bin seit einigen Wochen dabei mich mit php, mysql und dazu auch JavaScript zu befassen und umzusetzen.

Auf einer Textarea, die besagt, dass mit drücken von 'b' ein submit für einen Upload erfolgen soll wird folgende Funktion aufgerufen:

function jsUeberwache(element){
 var KeyID = (window.event) ? event.keyCode : element.keyCode;
 document.LoadForm.Freigabe.value=true;
 alert(KeyID);
    if ((hinweisstatus) && (KeyID==66)) document.LoadForm.submit();
}

Ein altbekanntes Problem wahrscheinlich (aber ich habe lange gesucht und noch keine passende Lösung gefunden.
Es funzt im IE aber Mozilla (Vers. 1.5.) macht nur die alert und gibt auch richtig die Keys im alert() aus. Aber der submit() funktioniert nicht.

Die Javascript Konsole sagt
"element has no properties".

Ich hoffe mir kann jemand helfen.

DANKE SCHONMAL

  1. Hi,

    if ((hinweisstatus) && (KeyID==66)) document.LoadForm.submit();

    Wo kommt hinweisstatus her? Welchen Wert hat es?

    cu,
    Andreas

    --
    Warum nennt sich Andreas hier MudGuard?
    Schreinerei Waechter
    O o ostern ...
    Fachfragen unaufgefordert per E-Mail halte ich für unverschämt und werde entsprechende E-Mails nicht beantworten. Für Fachfragen ist das Forum da.
    1. Hallo Andreas,

      Hi,

      if ((hinweisstatus) && (KeyID==66)) document.LoadForm.submit();

      Wo kommt hinweisstatus her? Welchen Wert hat es?

      cu,
      Andreas

      Das ist ein boolscher Wert, der gesetzt wird, damit das keyEvent nur abgehört wird, wenn ein bestimmter Button vorher gedrückt wurde und nicht andauernd wartet. Der Wert ist true, wenn der Button gedrückt wurde und sonst false.

      Shawn

  2. Hier ist wieder mal zweierlei Code erforderlich. Ich hab hier mal ein Beispiel ausgegraben, das du deinen Bedürfnissen entsprechend noch umbauen mußt:
    <script type="text/javascript">
    if (navigator.appName=="Netscape")
    { window.document.captureEvents (Event.KEYPRESS); }
    window.document.onkeypress = zeigen;
    function zeigen (evt)
    {
    if (navigator.appName=="Microsoft Internet Explorer")
    {
    if (event.keyCode==35)  // Rautetaste
    { alert ("Internet Explorer");}
    }
    if (navigator.appName=="Netscape")
    {
    if (evt.which==35)
    { alert ("Netscape");}
    }
    }
    </script>
    Opera mußt du halt ausprobieren.
    Gruß Wastl

    1. Hallo Wastl,

      und danke für die schnelle Antwort.

      Hab ich mir schon gedacht, dass da wieder unterschieden werden muss, so hab ich es auch in den Büchern nachgelesen.
      Ich probier es mal und sehe ob mein Cheffe die Lösung dann mag oder es auf IE beschränken will ;-)
      Aber Danke für die Hilfe, sollte was nicht gehen meld ich mich nochmal.

      Gruß Shawn

      1. Abschließende Bemerkungen:

        Wastl's Lösung funktioniert aber ich ahb auch noch ne kürzere gefunden, die ich mal mitteilen will:

        function jsUeberwache(evt) {
         document.LoadForm.Freigabe.value=true;
            evt = (evt) ? evt : ((window.event) ? window.event : "");
         if ((hinweisstatus) && (evt.keyCode==66)){
          document.LoadForm.submit();
         }
        }

        Danke an alle Helfer!!!

        1. Hallo Shawn,

          Wastl's Lösung funktioniert aber ich ahb auch noch ne kürzere gefunden, die ich mal mitteilen will:

          function jsUeberwache(evt) {
          document.LoadForm.Freigabe.value=true;
              evt = (evt) ? evt : ((window.event) ? window.event : "");
          if ((hinweisstatus) && (evt.keyCode==66)){
            document.LoadForm.submit();
          }
          }

          was mit "onkeypress", so wie Wastl die Funktion aufruft, aber wohl nicht funktionieren wird:

          "Beachten Sie:

          (...) Mozilla Firefox 1.0 kennt die Eigenschaft keyCode zwar, sie enthält jedoch nur bei den Ereignissen keyup und keydown sinnvolle Werte. Bei keypress-Ereignissen hat die Eigenschaft bei normalen Tasten, z.B. Buchstaben, immer den Wert 0. Die Eigenschaft which liefert immer den korrekten Tastencode, daher sollte Sie zunächst die Existenz jener Eigenschaft abfragen."

          http://de.selfhtml.org/javascript/objekte/event.htm#key_code

          Gruß Gernot

  3. Hallo Shawn,

    zeig doch mal, wo und wie du die Funktion "jsUeberwache()" überhaupt aufrufst, sonst kann man über dieses merkwürdige Verhalten von Firefox schwerlich was sagen.

    Gruß Gernot

    1. Hallo Shawn,

      zeig doch mal, wo und wie du die Funktion "jsUeberwache()" überhaupt aufrufst, sonst kann man über dieses merkwürdige Verhalten von Firefox schwerlich was sagen.

      Gruß Gernot

      liegt als onkeydown in einer Textarea, auf die der Focus gesetzt wird.
      Hab die Lösung von Wastl, die funktioniert!

      Aber danke fürs Interesse.

      Gruß Shawn