veru: Fokus innerhalb einiger Form Elemente festhalten

Hallo,

ich möchte erreichen, dass der Fokus innerhalb einiger der dargestellten Formularelemente bleibt. Das Problem ist, dass ich nur die Events der erlaubten Elemente dafür benutzen kann, nicht die der restlichen. D. h., in diesem Fall geht es nicht, dass jedes Formularelement bei onFocus eine Funktion aufruft und die ID überprüft. Ich bräuchte eine Methode, mit der ich bei onBlur abfragen kann, welches Element nun den Fokus erhält. Kennt jemand eine Möglichkeit, so etwas zu relisieren?

Danke,
Verena

  1. hi,

    ich möchte erreichen, dass der Fokus innerhalb einiger der dargestellten Formularelemente bleibt.

    welcher zweck verbirgt sich dahinter?

    Das Problem ist, dass ich nur die Events der erlaubten Elemente dafür benutzen kann, nicht die der restlichen. D. h., in diesem Fall geht es nicht, dass jedes Formularelement bei onFocus eine Funktion aufruft und die ID überprüft. Ich bräuchte eine Methode, mit der ich bei onBlur abfragen kann, welches Element nun den Fokus erhält.

    ich weiß nicht, in weit fokus-events "bubbeln", bzw. ob man aus einem vorfahrenelement heraus noch den auslöser feststellen kann; evtl. geht da was über das event-objekt.

    gruß,
    wahsaga

    --
    /voodoo.css:
    #GeorgeWBush { position:absolute; bottom:-6ft; }
    1. hi,

      ich möchte erreichen, dass der Fokus innerhalb einiger der dargestellten Formularelemente bleibt.

      welcher zweck verbirgt sich dahinter?

      Ich möchte eine frei konfigurierbare MessgeBox mit HTML und Javascript nachbilden, deren Werte ich einfach mit PHP auswerten kann. Dazu positioniere ich ein <div> mit undursichtiger Hintergrundfarbe in der Mitte des Bildschirms, darin enthalten sind auch die Buttons.
      Soweit funtioniert das, ich möchte nun auch gerne eine modale MessageBox nachbilden, d. h. der User kann auf der Website nichts andres machen, solange nicht einer der Buttons der Messagebox betätigt wurde. Dazu muss ich den Fokus irgend wie innerhalb einiger bestimmter Elemente halten.
      Da ich das ganze als unabhängige Komponente entwickeln möchte, soll es eben auch funktionieren, ohne die sonstigen auf der Site vorhandenen Elemente in irgend einer Weise beeinflussen zu müssen.

      Das Problem ist, dass ich nur die Events der erlaubten Elemente dafür benutzen kann, nicht die der restlichen. D. h., in diesem Fall geht es nicht, dass jedes Formularelement bei onFocus eine Funktion aufruft und die ID überprüft. Ich bräuchte eine Methode, mit der ich bei onBlur abfragen kann, welches Element nun den Fokus erhält.

      ich weiß nicht, in weit fokus-events "bubbeln", bzw. ob man aus einem vorfahrenelement heraus noch den auslöser feststellen kann; evtl. geht da was über das event-objekt.

      da gibts nur weitere Details zu den Mouse und Key events. Mit dem key event könnte ich abfragen, ob die tab taste gedrückt wurde und dann evtl. reagieren, bei den mouse events bliebe nur der Umweg über die Koordinaten zu berechnen, ob der klick innerhalb der box war. Und um das tun zu können, müsste ich wieder alle clicks abfangen, also einen handler für <body> definieren, was kaum möglich sein wird.

      Aber danke für den Versuch!

      1. hi,

        Ich möchte eine frei konfigurierbare MessgeBox mit HTML und Javascript nachbilden, deren Werte ich einfach mit PHP auswerten kann. Dazu positioniere ich ein <div> mit undursichtiger Hintergrundfarbe in der Mitte des Bildschirms, darin enthalten sind auch die Buttons.
        Soweit funtioniert das, ich möchte nun auch gerne eine modale MessageBox nachbilden, d. h. der User kann auf der Website nichts andres machen, solange nicht einer der Buttons der Messagebox betätigt wurde.

        und wenn du nicht nur einen kleinen div über die seite legst, sondern einen großen durchsichtigen, der genau so groß ist wie der viewport ...?
        mit einem kleineren, nicht durchsichten im inneren, um den optischen effekt beizubehalten.

        damit wäre anklicken anderer elemente schon mal nicht mehr möglich.
        navigieren per tastatur wird aber vermutlich weiterhin funktionieren. evtl. lassen sich tastendrücke ebenfalls noch abfangen.

        gruß,
        wahsaga

        --
        /voodoo.css:
        #GeorgeWBush { position:absolute; bottom:-6ft; }
        1. Hi,

          und wenn du nicht nur einen kleinen div über die seite legst, sondern einen großen durchsichtigen, der genau so groß ist wie der viewport ...?
          mit einem kleineren, nicht durchsichten im inneren, um den optischen effekt beizubehalten.

          im prinzip könnte das funktionieren. Das Problem ist, das das eine Komponente für das Prado
          Framework werden soll und da könnte es Probleme geben mit der Reichenfolge, wie die Elemente ausgewertet werden.

          damit wäre anklicken anderer elemente schon mal nicht mehr möglich.
          navigieren per tastatur wird aber vermutlich weiterhin funktionieren. evtl. lassen sich tastendrücke ebenfalls noch abfangen.

          Mausaktionen sind mir erstmal wichtiger. Ich werde mal mit dieser Idee etwas herumspielen, danke.

      2. welcher zweck verbirgt sich dahinter?
        Ich möchte eine frei konfigurierbare MessgeBox mit HTML und Javascript nachbilden, deren Werte ich einfach mit PHP auswerten kann. Dazu positioniere ich ein <div> mit undursichtiger Hintergrundfarbe in der Mitte des Bildschirms, darin enthalten sind auch die Buttons.
        Soweit funtioniert das, ich möchte nun auch gerne eine modale MessageBox nachbilden, d. h. der User kann auf der Website nichts andres machen, solange nicht einer der Buttons der Messagebox betätigt wurde. Dazu muss ich den Fokus irgend wie innerhalb einiger bestimmter Elemente halten.
        Da ich das ganze als unabhängige Komponente entwickeln möchte, soll es eben auch funktionieren, ohne die sonstigen auf der Site vorhandenen Elemente in irgend einer Weise beeinflussen zu müssen.

        Eine Idee: Du fängst document.onclick ab und prüfst ob der Klick auf dem DIV stattgefunden hat (evtl. mit der ID von target oder srcElement) und legst dann den Focus wieder auf ein element in deinem DIV oder führst ein blur auf dem klickelement durch.

        Das Problem ist, dass ich nur die Events der erlaubten Elemente dafür benutzen kann, nicht die der restlichen. D. h., in diesem Fall geht es nicht, dass jedes Formularelement bei onFocus eine Funktion aufruft und die ID überprüft. Ich bräuchte eine Methode, mit der ich bei onBlur abfragen kann, welches Element nun den Fokus erhält.

        JS kann nicht hellsehen. Der onfocus Event wird ja erst nach dem onblur Ebvent durchgeführt.

        Struppi.