Kristin: Eventhandler onchange beim Ändern von selected

Hi

Warum wird der Event onchange nicht aufgerufen, wenn ich innerhalb einer JavaScript-Funktion den selected Status einer Dropdown-Liste ändere?

Beispiel:

[...]  
document.form.test[2].selected = true;  
[...]
<select name="test" onchange="test(this);">  
<option value="Text">Text</option>  
[...]  
</select>

was muss ich ändern, damit die Funktion test() aufgerufen wird?

Kristin

  1. Hi,

    Warum wird der Event onchange nicht aufgerufen, wenn ich innerhalb einer JavaScript-Funktion den selected Status einer Dropdown-Liste ändere?

    Es ist halt so.

    was muss ich ändern, damit die Funktion test() aufgerufen wird?

    Rufe sie einfach im Script auf, nachdem du die Option selektierst.

    MfG ChrisB

    --
    Light travels faster than sound - that's why most people appear bright until you hear them speak.
    1. Hi

      »» Warum wird der Event onchange nicht aufgerufen, wenn ich innerhalb einer JavaScript-Funktion den selected Status einer Dropdown-Liste ändere?

      Es ist halt so.

      »» was muss ich ändern, damit die Funktion test() aufgerufen wird?

      Rufe sie einfach im Script auf, nachdem du die Option selektierst.

      wie muss ich das machen, wenn ich mehrere Formulare habe, die annähernd die selben Elemente haben, aber bei onchange andere Parameter übergeben und andere Funktionen aufgerufen werden?

      Kristin

      1. Hi,

        Rufe sie einfach im Script auf, nachdem du die Option selektierst.

        wie muss ich das machen, wenn ich mehrere Formulare habe, die annähernd die selben Elemente haben, aber bei onchange andere Parameter übergeben und andere Funktionen aufgerufen werden?

        Du hast eine Code-Stelle gezeigt, an der du die selected-Eigenschaft eines Elements in einem bestimmten Formular änderst.
        Also wird es dir doch wohl möglich sein, in der nächsten Zeile auch die Referenz auf eben dieses Formularelement an deine Funktion zu übergeben ...?

        MfG ChrisB

        --
        Light travels faster than sound - that's why most people appear bright until you hear them speak.
        1. Hi!

          »» > Rufe sie einfach im Script auf, nachdem du die Option selektierst.
          »»
          »» wie muss ich das machen, wenn ich mehrere Formulare habe, die annähernd die selben Elemente haben, aber bei onchange andere Parameter übergeben und andere Funktionen aufgerufen werden?

          Du hast eine Code-Stelle gezeigt, an der du die selected-Eigenschaft eines Elements in einem bestimmten Formular änderst.
          Also wird es dir doch wohl möglich sein, in der nächsten Zeile auch die Referenz auf eben dieses Formularelement an deine Funktion zu übergeben ...?

          das mit der Referenz ist kein Problem.

          Der Code vom Ursprungspost war ziemlich gekürzt um die Frage allgemein zu halten.

          Das onchange sieht z.B. wie folgt aus

          im Formular 1
          onchange="test1(this);test2(this, 'irgendetwas')"

          im Formular 2
          onchange="test1(this);test2(this, 'irgendetwas anders')"

          im Formular 3
          onchange="test1(this);test2(this, 'wieder etwas anders')"

          die Funktion test1(Referenz) aufzurufen ist kein Problem

          test1(obj.form.test)
          obj = übergebene Referenz
          test = Name der Dropdownliste

          Wie rufe ich aber die Funktion test2(Referenz, Text) auf? Bzw. wie komme ich an den Text?

          Kristin

          1. Der Code vom Ursprungspost war ziemlich gekürzt um die Frage allgemein zu halten.

            Das onchange sieht z.B. wie folgt aus

            im Formular 1
            onchange="test1(this);test2(this, 'irgendetwas')"

            im Formular 2
            onchange="test1(this);test2(this, 'irgendetwas anders')"

            im Formular 3
            onchange="test1(this);test2(this, 'wieder etwas anders')"

            die Funktion test1(Referenz) aufzurufen ist kein Problem

            test1(obj.form.test)
            obj = übergebene Referenz
            test = Name der Dropdownliste

            Wie rufe ich aber die Funktion test2(Referenz, Text) auf? Bzw. wie komme ich an den Text?

            Was heißt wie rufe ich die Funktion auf? Sie wird aufgerufen, wenn du im select Element etwas änderst.
            An welchen Text?

            Struppi.

            1. n'abend,

              Was heißt wie rufe ich die Funktion auf? Sie wird aufgerufen, wenn du im select Element etwas änderst.

              Ich befürchte Kirstin weiß nicht, dass
              <input onchange="funktion1(this);function2(this,'hallo welt');"
              im Javascript Kontext
              inputObject.onchange = function(){ function1( this ); function2( this, 'hallo welt') };
              bedeutet. Weshalb sich bei Kirstin die Idee noch nicht eingeschlichen hat, dass sie auch einfach inputObject.onchange(); ausführen könnte.

              (Vorträge über richtiges™ Event-Management spare ich mir hier einfach mal.)

              weiterhin schönen abend...

              --
              #selfhtml hat ein Forum?
              sh:( fo:# ch:# rl:| br:> n4:& ie:{ mo:} va:) de:] zu:} fl:( ss:? ls:[ js:|
              1. n'abend,

                »» Was heißt wie rufe ich die Funktion auf? Sie wird aufgerufen, wenn du im select Element etwas änderst.

                Ich befürchte Kirstin weiß nicht, dass
                <input onchange="funktion1(this);function2(this,'hallo welt');"
                im Javascript Kontext
                inputObject.onchange = function(){ function1( this ); function2( this, 'hallo welt') };
                bedeutet. Weshalb sich bei Kirstin die Idee noch nicht eingeschlichen hat, dass sie auch einfach inputObject.onchange(); ausführen könnte.

                ok, das wusste ich noch nicht

                (Vorträge über richtiges™ Event-Management spare ich mir hier einfach mal.)

                weiterhin schönen abend...

                gibt es etwas zu bemängeln bei mir? Über eine Info wäre ich sehr dankbar, damit ich die Fehler beseitigen kann? Gibt es dazu brauchbare Lektüre?

                Kristin

                1. n'abend,

                  gibt es etwas zu bemängeln bei mir? Über eine Info wäre ich sehr dankbar, damit ich die Fehler beseitigen kann? Gibt es dazu brauchbare Lektüre?

                  Bemängeln? Das kommt wohl rein auf das Evangelium an. Ich versuche mir abzugewöhnen anderen Leuten meinen Glauben aufzuzwingen. Wenn du aber dennoch "Mängel" aufgezeigt bekommen magst:

                  _Ich_ würde es beispielsweise komplett vermeiden Javascript Gedöns in mein HTML-Dokument zu packen. <input onchange=""> ist, laut meinem Evangelium, zu 100% vermeidbar. Stattdessen werden solche Event-Handler mittels Javascripts nach dem Laden der Seite eingeklinkt. Sollte mal kein Javascript zur Verfügung stehen, geht schon nichts kaputt.

                  Ich würde mich mit jQuery auseinandersetzen. Es erleichtert das Javascript-Leben ungemein. Es gibt einfache Schnittstellen um Elemente zu finden und zu manipulieren. Es gibt etliche Plugins (von denen ich bislang kein einziges einsetze). Es macht die unzulänglichkeiten verschiedener Browser transparent - kümmert sich also um die Unterschiede zwischen Browsern und dem Internet Explorer. Ohne dein Zutun. Herrlich einfach. Das Event-Management gefällt mir auch sehr gut. Es ist einfach, aber extrem mächtig.

                  weiterhin schönen abend...

                  --
                  #selfhtml hat ein Forum?
                  sh:( fo:# ch:# rl:| br:> n4:& ie:{ mo:} va:) de:] zu:} fl:( ss:? ls:[ js:|