Smart: onFocus

Hi,

ich habe da wieder ein Problem.
Es geht um Key events(Event-handler) bie Javascript.
Also, einfach gesagt, ich habe ein Textfeld und ein "href":

<input type="text" onblur="tuwas()">
<a href="" onclick="tunochwas()">Test</a>

Wenn ich auf "Test" klicke, wird dann der Inhalt des Textfeldes über die
Funktion "tuwas()" ausgelesen.
Wenn ich aber woanders klicke und das Textfeld seinen Fokus verliert, sollte
eine andere Funktion aufgerufen werden.

Das Problem ist, wenn ich jetzt auf den Link klicke tritt immer wieder
"onblur" in kraft und ich kann nie die Funktion "tuwas()" aufrufen, weil
das Textfeld so nicht mehr fokusiert ist.

Kann man dies irgendwie verhindern bzw. umbiegen?

Gruss

  1. setze doch den Link UND das Textfeld in ein DIV Objekt, und prüfe das DIV ob es focusiert ist, oder nicht.

    Gruß, Markus**

    1. setze doch den Link UND das Textfeld in ein DIV Objekt, und prüfe das DIV ob es focusiert ist, oder nicht.

      focus-Events steigen nicht auf (kein Bubbling) und div-Elemente können selbst keine focus-Events empfangen.

      Beides ginge zwar sehr umständlich, aber ich weiß nicht recht, ob das die passende Lösung ist.

      Mathias

      1. »» setze doch den Link UND das Textfeld in ein DIV Objekt, und prüfe das DIV ob es focusiert ist, oder nicht.

        focus-Events steigen nicht auf (kein Bubbling) und div-Elemente können selbst keine focus-Events empfangen.

        Oh stimmt, das waren layer, die das können... sorry! Würde aber auch nicht weiterhelfen, da es ausschließlich netscape beherscht.

    2. Hallo Markus,

      das kann ich leider nicht tun, weil die Links dynamisch erzeugt und an
      einer anderen Stelle angezeigt werden.

      Gruss

  2. Wenn ich aber woanders klicke und das Textfeld seinen Fokus verliert, sollte
    eine andere Funktion aufgerufen werden.

    Dann passt es nicht in den blur-Handler - zumindest nicht ohne eine Prüfung.

    Das Problem ist, wenn ich jetzt auf den Link klicke tritt immer wieder
    "onblur" in kraft und ich kann nie die Funktion "tuwas()" aufrufen, weil
    das Textfeld so nicht mehr fokusiert ist.

    Wieso muss das Feld fokussiert sein in dem Moment, wenn du tuwas aufrufst?
    Kannst du nicht einfach onclick="tuwas(); tunochwas()"> schreiben?
    So ganz verstehe ich das Kernproblem nicht. Werde doch mal bitte etwas konkreter und sage uns, was diese Funktionen tun sollen, damit wir dein Anliegen besser verstehen können.

    Mathias

    1. Hi,

      danke für die Antwort.
      Ich kann leider diese Funktionen nicht beide zusammen in das Textfeld
      reinpacken. Ich habe ein DIV-Element, das verschwinden muss, wenn das Feld
      den Fokus verliert. Ich muss die Viele Links innerhalb des DIV-Elements
      auslesen, wenn ich drauf klicke. Aber wenn ich auf den Link klicke, hat das
      Textfeld keinen Fokus mehr und wird immer die Funktion "tunochwas()"
      aufgerufen. Ich kann zwar in "onblur()" auch die zweite Funktion aufrufen,
      man bekommt aber den Wert "undefined" weil anscheint "onclick()" nicht
      mehr zum Zuge kommt, wenn "onblur()" aufgerufen ist.

      Gruss

      1. Ich kann zwar in "onblur()" auch die zweite Funktion aufrufen,
        man bekommt aber den Wert "undefined" weil anscheint "onclick()" nicht
        mehr zum Zuge kommt, wenn "onblur()" aufgerufen ist.

        Was das bedeutet weißt nur du. Was heißt in dem zusammenhang "bekommt den Wert undefined"?

        Struppi.

        1. Hi,

          der Aufbau sieht in etwa so aus:

          function setInhalt(wert) {
          document.getElementById("inhalt").value = wert.innerHTML;
          document.getElementById("myContent").style.visibility = 'hidden';
          }

          function clearResult(){
          document.getElementById(ausgabeFeld).innerHTML = "";
          document.getElementById(ausgabeFeld).style.visibility = 'hidden';
          }

          <input type="text" id="inhalt" onblur="clearResult();">
          <div id="myContent" class="suchInhalt" dir="rtl">
          <a href='' onclick='setInhalt(this);return false;'>mein Text</a>
          </div>

          Also wenn man auf den Link klickt, wird der Text "mein Text" von "href" in
          Textfeld eigetragen und das DIV-Element dann auf unsichtbar gesetzt.

          Das Problem bei "onblur()" ist, dass dieser Vorgang nicht mehr stattfindet
          und man kann nicht mehr diesen Link-Text auslesen und in Textfeld eintragen.
          Ich hoffe, ich könnte das Problem etwas klarer machen.

          Gruss

      2. Sorry, so kommen wir nicht weiter. Ich verstehe nur Bahnhof. WAS hast du genau vor? Bitte erzähle einmal, was du vorhast, sonst drehen wir uns nur im Kreis.

        Ich habe ein DIV-Element, das verschwinden muss, wenn das Feld den Fokus verliert.

        Okay, soweit klar (vermute ich): Es gibt ein Element, dass ausgeblendet wird, wenn das Feld den Fokus verliert.

        Ich muss die Viele Links innerhalb des DIV-Elements auslesen, wenn ich drauf klicke.

        Kannst du das nochmal bitte in verständlich formulieren?
        Was bedeutet, du musst Links auslesen?
        Und wann? Wenn man auf einen bestimmten Link klickt?
        Was hat diese Logik mit dem Formularfeld zu tun?

        Aber wenn ich auf den Link klicke, hat das Textfeld keinen Fokus mehr und wird immer die Funktion "tunochwas()" aufgerufen.

        Noch einmal: Wieso muss das Feld fokussiert sein in dem Moment, wenn du tuwas aufrufst?

        Ich kann zwar in "onblur()" auch die zweite Funktion aufrufen,

        Habe ich doch gar nicht gesagt?!

        man bekommt aber den Wert "undefined"

        Was ergibt diesen Wert?

        weil anscheint "onclick()" nicht mehr zum Zuge kommt, wenn "onblur()" aufgerufen ist.

        Wieso sollte der Klick auf den Link ignoriert werden, wenn du beim blur des Textfeldes etwas aufrufst?

        Mathias

  3. Wäre etwas in der Art, in Deinem Sinne?

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"  
    "http://www.w3.org/TR/html4/loose.dtd">  
    <HTML>  
    <HEAD>  
    <TITLE>test</TITLE>  
    <script type="text/javascript" language="javascript">  
      
    [code lang=javascript]var link = 0; // global var "link"  
      
    unction tuwas()  
    	{  
    	if (link == 0) // Maus über'm Link?  
    		{  
    		alert(document.getElementsByTagName("INPUT")[0].value);  
    		}  
    	}  
      
    function link(a)  
    	{  
    	link=a;  
    	}  
      
    function tuwasanderes()  
    	{  
    	alert('was völlig anderes!');  
    	}  
    
    

    </script>
    </HEAD>
    <BODY>
    <h1>Test</h1>
    <input type="text" value="" onblur="tuwas();">
    Hier kommt irgendwas...<br>
    und ganz woanders kommt der <a href="" name="test" onClick="tuwasanderes();" onMouseOver="link('1')" onMouseOut="link('0')">Link</a>
    </BODY>
    </HTML>
    [/code]

    Gruß, Markus**

    1. Oh, sorry - ich hab die variable link und die funktion link - hab ich grad beim testen bemerkt. die müssen natürlich unterschiedlich heißen!

      <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
      "http://www.w3.org/TR/html4/loose.dtd">
      <HTML>
      <HEAD>
      <TITLE>test</TITLE>
      <script type="text/javascript" language="javascript">

      var link = 0; // global var "link"

      function tuwas()
      {
      if (link == 0) // Maus über'm Link?
      {
      alert(document.getElementsByTagName("INPUT")[0].value);
      }
      }

      function linked(a)
      {
      link=a;
      }

      function tuwasanderes()
      {
      alert('was völlig anderes!');
      }

      </script>
      </HEAD>
      <BODY>
      <h1>Test</h1>
      <input type="text" value="" onblur="tuwas();">
      Hier kommt irgendwas...<br>
      und ganz woanders kommt der <a href="" name="test" onClick="tuwasanderes();" onMouseOver="linked('1')" onMouseOut="linked('0')">Link</a>
      </BODY>
      </HTML>

      1. Hallo Markus,

        vielen Dank für deine Bemühung. Das Problem sieht in etwa so aus. Ich habe
        versucht das Ganze unten etwas näher zu erklären. Ich hoffe dies hilft.

        Gruss

    2. Wäre etwas in der Art, in Deinem Sinne?

      ich hoffe nicht!

      <script type="text/javascript" language="javascript">

      was soll das language-Attribut hier?

      var link = 0; // global var "link"

      hier definierst du link

      function link(a)

      und hier gleich nochmal

      Was soll das bewirken?

      1. »» Wäre etwas in der Art, in Deinem Sinne?
        ich hoffe nicht!

        »» <script type="text/javascript" language="javascript">
        was soll das language-Attribut hier?

        was soll denn die Frage bitte? Das languge-Attribut ist in Transitional im SCRIPT Tag erlaubt, wenn auch nicht erforderlich...

        »» var link = 0; // global var "link"
        hier definierst du link

        »» function link(a)
        und hier gleich nochmal

        Was soll das bewirken?

        Dass ich mich umgehend verbessert hab im Folgenden Posting hast Du wohl übersehen, mh? Aber kein Problem, inzwischen hab ich schon bemerkt, dass Du sowieso immer alles besser weißt!
        In diesem Sinne wünsch' ich Dir noch nen schönen Feiertag!

        Markus**

        1. »» »» <script type="text/javascript" language="javascript">
          »» was soll das language-Attribut hier?
          was soll denn die Frage bitte? Das languge-Attribut ist in Transitional im SCRIPT Tag erlaubt, wenn auch nicht erforderlich...

          Dann lass den Mist doch weg! Wenn du hier im Forum postest musst du dich auch der Kritik stellen hinsichtlich veralteter Syntax, die da neben dem überflüssigen language-Attribut besteht aus groß geschriebenen Tag-Namen und Event-Namen mit Großbuchstaben.

          1. veralteter Syntax, die da neben dem überflüssigen language-Attribut besteht aus groß geschriebenen Tag-Namen und Event-Namen mit Großbuchstaben.

            Was ist daran veraltet, HTML 4 bzw. HTML 5 zu schreiben?
            Macht die Existenz von XHTML deiner Meinung nach HTML überflüssig?
            Warum sollte man XHTML-Regeln befolgen, wenn man doch HTML schreibt?
            Fragen über Fragen.

            Mathias

            1. » veralteter Syntax, die da neben dem überflüssigen language-Attribut besteht aus groß geschriebenen Tag-Namen und Event-Namen mit Großbuchstaben.

              Was ist daran veraltet, HTML 4 bzw. HTML 5 zu schreiben?
              Macht die Existenz von XHTML deiner Meinung nach HTML überflüssig?

              worauf willst du hinaus? Das language attribut ist bereits in HTML 4 als deprecated bezeichnet und in HTML 5 kommt es gar nicht mehr vor, wird aber irgendwie ausgewertet. Es ist aber auf jeden Fall überflüssig, veraltet aber mit Sicherheit, oder?

              Struppi.

              1. worauf willst du hinaus?

                Das language-Attribut kann man als veraltet bezeichnen, das stimmt. Ich wollte jedoch auf
                »veraltete Syntax, die da ... besteht aus groß geschriebenen Tag-Namen und Event-Namen mit Großbuchstaben«
                hinaus. Das ist einfach HTML 4/5 vs. XHTML 1.

                Mathias

            2. Fragen über Fragen.

              die du dir geflissentlich selbst beantworten darfst.

              1. Na, das war mal ein Griff ins Klo. Lass es doch bitte gleich bleiben, vermeintliche Fehler von anderen besserwisserisch anzuprangern, wenn du dich keiner sachlichen Diskussion stellen willst und nicht bereit für eine Prüfung deiner Aussagen bist.

                Mathias