Alex: Refresh einer Seite nach Auswahl aus Liste

Hi,

ich habe folgendes Problem und hoffe auf eure Hilfe:

Ich habe eine Eingabemaske mit diversen Feldern für Eigenschaften eines Elementes (Textfelder und Auswahllisten). Sobald man aus einer Drop-down-Liste einen bestimmten Wert gewählt hat, sollen in einer weiteren Drop-down-Liste die entsprechenden Auswahlwerte geladen werden (abhängig von der oberen Auswahl). Die Seite muss also neu geladen werden.

Nun weiß ich nicht wie ich das machen kann. Müsste doch recht simpel machbar sein oder? Denke am einfachsten irgendwie mit JavaScript, bin aber für sämtliche Vorschläge offen.

Das ganze ist übrigens in eine Methode eines Java Servlet eingebunden (Formular mit Submit-Button).

Bin dankbar für jegliche Hifestellung.

Gruß, Alex

  1. Hi Alex,

    vielleicht hilft dir der folgende Artikel im SELFHTML Weblog weiter.

    Gruß Gunther

    1. Das is nicht schlecht, allerdings fast schon zu umfangreich für unseren Verwendungszweck.
      Wir haben nun den Befehl:

      OnChange="top.Content.System.location.reload()

      eingebaut, mit dem die Seite erfolgreich neugeladen wird bei Auswahl eines Elementes.
      Wie kann ich da nun Parameter mit übergeben die das gewählte Element dann erkennbar machen?

      1. Also wie ich merke taugt das ".reload()" nix.
        ich habe in meinem Java Servlet eine Methode "NewElementForm(...)" die die ganze Eingabemaske erzeugt und anzeigt. Das reload scheint die Seite nicht wirklich komplett neu aufzurufen. Der eigentlich veränderte Parameter ist danach immer noch "null"...

        Gibt es da noch andere nette Befehle für "OnChange"?
        ("submit" ist keine Lösung...)

      2. Wir haben nun den Befehl:

        OnChange="top.Content.System.location.reload()

        eingebaut, mit dem die Seite erfolgreich neugeladen wird bei Auswahl eines Elementes.
        Wie kann ich da nun Parameter mit übergeben die das gewählte Element dann erkennbar machen?

        Soweit ich das verstehe willst du einfach das Formular abschicken, das geht mit
        onchange="this.form.submit()"

        Struppi.

        1. Wie gesagt geht submit leider nicht.
          Das darf erst später geschehen wenn der Benutzer es auch anklickt, da dabei die gesamten Daten in die Datenbank geschrieben werden.

          Also ich brauche einfach nur eine Möglichkeit
          ONCHANGE zu reloaden mit Parameterübergabe

          1. ONCHANGE zu reloaden mit Parameterübergabe

            Was für Parameter?

            Struppi.

            1. ONCHANGE zu reloaden mit Parameterübergabe

              Was für Parameter?

              Struppi.

              genau den Parameter der in der Dropdown-Liste ausgewählt wurde
              (select onchange=...)

              1. genau den Parameter der in der Dropdown-Liste ausgewählt wurde
                (select onchange=...)

                Und warum kannst du dann das Formular nicht einfach abschicken?
                Alles andere wäre unnötiges rumgemurkse. Was ist der unterschied bei dir zwischen einem submit und einem reload rufst du da unterschiedliche Seiten auf?

                Struppi.

                1. Und warum kannst du dann das Formular nicht einfach abschicken?
                  Alles andere wäre unnötiges rumgemurkse. Was ist der unterschied bei dir zwischen einem submit und einem reload rufst du da unterschiedliche Seiten auf?

                  Struppi.

                  Beim submit werden wie gesagt die Daten angelegt und abgespeichert.
                  Es folgt eine Seite die das erledigt und danach eine Übersichtsseite aller bisher angelegten Elemente. Das darf nicht passieren.

                  Oder ist es möglich eine Art "hidden"-submit zu machen welches eine andere Aktion ausführt (eben nur den reload)?

                  1. Beim submit werden wie gesagt die Daten angelegt und abgespeichert.

                    und das heißt relaod und submit sind uznterschiedliche URLs?

                    Oder ist es möglich eine Art "hidden"-submit zu machen welches eine andere Aktion ausführt (eben nur den reload)?

                    Auf dem Server? Sicher.

                    Struppi.

                    1. Beim submit werden wie gesagt die Daten angelegt und abgespeichert.

                      und das heißt relaod und submit sind uznterschiedliche URLs?

                      Also da das ganze in ein Java-Servlet eingebunden ist, ist das ein wenig undurchsichtig.

                      Ich habe ein Methode:

                      public void NewElementForm(HttpServletRequest req, HttpServletResponse res, Project project) {
                            Hier is das Formular drin mit Submit Button.
                            Der submit-Button sagt nichts außer:
                            "<INPUT TYPE="SUBMIT" VALUE="Create Countermeasure">
                      }

                      weshalb auch immer, wird nach dem submit-klicken diese Methode aufgerufen:

                      public void NewElement(HttpServletRequest req, HttpServletResponse res, Project project) {
                             hierdrin geschieht das Schreiben der Daten anhand der   Parameter aus dem Formular (die Seite bleibt unsichtbar, nichts wird angezeigt).
                      Am Ende dieser Methode wird explizit
                      ShowNextView(req, res, countermeasure);
                      aufgerufen was dann zur Elementeübersicht führt.
                      }

                      Ok, ich glaube ich kann in der zweiten Methode durch eine if-Abfrage das Schreiben verhindere und stattdessen wieder "NewElementForm(..)" aufrufen.
                      Bei einem ersten Versuche bekomme ich nun meine Eingabemaske doppelt präsentiert...

                      Wie genau lautet der Befehl für ein "Onchange-submit"?

                      1. Also da das ganze in ein Java-Servlet eingebunden ist, ist das ein wenig undurchsichtig.

                        Dachte ich mir. Ich kann aber absolut keine Java.

                        Wie genau lautet der Befehl für ein "Onchange-submit"?

                        https://forum.selfhtml.org/?t=155813&m=1014328

                        Struppi.

                        1. Wie genau lautet der Befehl für ein "Onchange-submit"?

                          https://forum.selfhtml.org/?t=155813&m=1014328

                          kann ich da nun ein Paramter (value) mitgeben?

                          1. Wie genau lautet der Befehl für ein "Onchange-submit"?

                            https://forum.selfhtml.org/?t=155813&m=1014328

                            kann ich da nun ein Paramter (value) mitgeben?

                            Diese werden automatisch, wie bei jedem submit übergeben.

                            Struppi.

                            1. Wie genau lautet der Befehl für ein "Onchange-submit"?

                              https://forum.selfhtml.org/?t=155813&m=1014328

                              kann ich da nun ein Paramter (value) mitgeben?

                              Diese werden automatisch, wie bei jedem submit übergeben.

                              ja klar, aber ich will nun noch einen speziellen erzeugen auf den ich dann prüfen kann ob per "onchange" submitted wurde oder ob wirklich submitted wurde.

                              wenn ich "<INPUT TYPE="SUBMIT" VALUE="create"> habe,
                              kann ich dann abfragen submit== create?
                              ist submit der name des paramaters oder muss ich noch einen anlegen?

                              1. Hallo.

                                aber ich will nun noch einen speziellen erzeugen auf den ich dann prüfen kann ob per "onchange" submitted wurde oder ob wirklich submitted wurde.

                                Dann setze doch einfach mittels des gleichen Event-Handlers vor dem Absenden einen dir genehmen Wert in ein verborgenes Textfeld, dessen Inhalt ja mit übergeben wird. Bei einer Übergabe ohne Event-Handler wird der Ursprungswert ja nicht verändert.
                                MfG, at

                                1. Dann setze doch einfach mittels des gleichen Event-Handlers vor dem Absenden einen dir genehmen Wert in ein verborgenes Textfeld, dessen Inhalt ja mit übergeben wird. Bei einer Übergabe ohne Event-Handler wird der Ursprungswert ja nicht verändert.
                                  MfG, at

                                  Das Problem war das ich mir merken musste ob der Wert geändert wurde oder nicht (im Vergleich zum vorigen aufruf).
                                  Ich hab das nun über eine globale Variable gelöst, ganz simpel.

                                  Danke, an alle.

                                  1. Hallo.

                                    Das Problem war das ich mir merken musste ob der Wert geändert wurde oder nicht (im Vergleich zum vorigen aufruf).

                                    Aber das hättest du ja bei der Auswertung der Inhalte gemerkt.
                                    MfG, at

                                    1. Hallo.

                                      Das Problem war das ich mir merken musste ob der Wert geändert wurde oder nicht (im Vergleich zum vorigen aufruf).

                                      Aber das hättest du ja bei der Auswertung der Inhalte gemerkt.
                                      MfG, at

                                      Ich muss doch die Variable die "onchange" geändert wurde mit sich selbst (einen Zyklus früher) vergleichen. Muss den Wert also irgendwie zwischenspeichern. Das wusste ich nicht wie.
                                      Die globale Variable is die ideale Lösung.

                                      1. Hallo.

                                        Das Problem war das ich mir merken musste ob der Wert geändert wurde oder nicht (im Vergleich zum vorigen aufruf).

                                        Aber das hättest du ja bei der Auswertung der Inhalte gemerkt.
                                        MfG, at

                                        Ich muss doch die Variable die "onchange" geändert wurde mit sich selbst (einen Zyklus früher) vergleichen. Muss den Wert also irgendwie zwischenspeichern. Das wusste ich nicht wie.
                                        Die globale Variable is die ideale Lösung.

                                        Gut, eine hidden-variable würd's wohl auch tun.