Timo: onchange?

Hallo Leute,

ich habe ein Formular, wo der User Daten für einen Termineintrag eingeben kann. Diese vielen Eingabefelder wie z.B. Thema, Notizen, Datum, Uhrzeit etc. befinden sich also innerhalb eines <Form-Tags>.

Ich möchte gerne dem User die Option geben, dass er den gerade anzulegenden Termin auch mehrfach eintragen kann. Also z.B. jeden Mittwoch.

Da ich speziell nur für dieses Feature diverse Zusatzdaten benötige, z.B. Was passiert, wenn der Termin auf ein Wochenende fällt (sofern er jeden 3. des Monats eingibt, wie oft soll der Termin wiederholt werden usw.) wäre es sehr von Vorteil, wenn diese Zusatzabfrage automatisch eingeblendet wird, sobald der User auf ne Checkbox klickt. (dies ist ein Mehrfachtermin) Vorher sollen diese Zusatzfragen halt nicht zu sehen sein.
Zunächst soll das Formular also ohne diese ganzen Zusatzabfragen dargestellt werden, sondern lediglich (neben den "normalen" Termindaten) mit einer Checkbox, welche erst nach anklicken per onchange z.B. diese Zusatzabfragen einblendet.

Mein Problem ist jetzt, was für ein "Ereignis" in das onchange hinein muss.
"this.form" kann ich nicht nehmen, weil sich das ganze ja bereits in einem Form-Tag befindet. Mit einem "reload" erreiche ich ja auch nichts neues.
Oder habe ich da jetzt einen Denkfehler bzw. was habt Ihr dazu für Ideen.

Vielen Dank für hilfreiche Tipps...

  1. Hi,

    Mein Problem ist jetzt, was für ein "Ereignis" in das onchange hinein muss.
    "this.form" kann ich nicht nehmen, weil sich das ganze ja bereits in einem Form-Tag befindet.

    <form> kennt kein onchange, sondern nur die darin enthaltenen Eingabefelder.

    Cheatah

    --
    X-Self-Code: sh:( fo:} ch:~ rl:° br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
    X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
    X-Will-Answer-Email: No
    X-Please-Search-Archive-First: Absolutely Yes
    1. <form> kennt kein onchange, sondern nur die darin enthaltenen Eingabefelder.

      Da habe ich mich dann missverständlich ausgedrückt.
      Der "onchange" hängt natürlich in der Checkbox.
      Erst wenn diese Checkbox angeklickt wird, sollen weitere Eingabefelder erscheinen. Vorher nicht.
      Ich könnte also diese besagte Checkbox mit den Zusatzeingabefeldern in einem eigenen Form-Tag setzen. und dann mit onchange=this.form das ganze realisieren.

      Das ganze alleine klappt ja auch soweit.

      Aber da ja diese Zusatzeingaben dann noch mit anderen eingaben an ein anders Script gesendet werden sollen, müssen ja alle Eingabefelder in einem weiteren Form-Tag liegen und genau das ist das Problem. Man kann halt keine Form-Tags verschachteln.

      Ich versuch´s jetzt ersteinmal mit onklick (@LX)zu realisieren. Da kenne ich mich zwar noch nicht großartig mit aus, aber mal sehen wie weit ich komme...

      Gruß

      1. Mahlzeit Timo,

        Erst wenn diese Checkbox angeklickt wird, sollen weitere Eingabefelder erscheinen. Vorher nicht.

        Aha. "Angeklickt". Meinst Du nicht, dass dann "onclick" besser geeignet ist?

        Ich könnte also diese besagte Checkbox mit den Zusatzeingabefeldern in einem eigenen Form-Tag setzen. und dann mit onchange=this.form das ganze realisieren.

        <http://de.selfhtml.org/html/formulare/definieren.htm#bereich@title=<form>>-Elemente dürfen nicht verschachtelt werden. Darüberhinaus frage ich mich, was genau Du mit "onchange=this.form" meinst ...

        Das ganze alleine klappt ja auch soweit.

        Was genau klappt da?

        Aber da ja diese Zusatzeingaben dann noch mit anderen eingaben an ein anders Script gesendet werden sollen,

        Ein anderes? Also die Formulare sollen an unterschiedliche Ziele geschickt werden? Wie wäre es, wenn Du Dich entweder klarer ausdrückst oder alternativ etwas erklärenden Beispiel-Code zeigst?

        müssen ja alle Eingabefelder in einem weiteren Form-Tag liegen und genau das ist das Problem. Man kann halt keine Form-Tags verschachteln.

        Richtig. Aber wie kommst Du darauf, dass die zusätzlichen Felder in einem anderen <form>-Element liegen müssen?

        Ich versuch´s jetzt ersteinmal mit onklick (@LX)zu realisieren. Da kenne ich mich zwar noch nicht großartig mit aus, aber mal sehen wie weit ich komme...

        Dafür gibt's ja http://de.selfhtml.org/javascript/sprache/eventhandler.htm#onclick@title=SELFHTML.

        MfG,
        EKKi

        --
        sh:( fo:| ch:? rl:( br:> n4:~ ie:% mo:} va:) de:] zu:) fl:{ ss:) ls:& js:|
      2. @@Timo:

        Da es wiederholt auftaucht:

        Ich könnte also diese besagte Checkbox mit den Zusatzeingabefeldern in einem eigenen Form-Tag setzen.

        Nein, kannst du nicht.

        müssen ja alle Eingabefelder in einem weiteren Form-Tag liegen

        Nein, liegen sie nicht.

        Nicht im „Tag“, sondern im „Element“. [Meiert]

        Live long and prosper,
        Gunnar

        --
        Erwebsregel 208: Manchmal ist das einzige, was gefährlicher als eine Frage ist, eine Antwort.
      3. Hi,

        <form> kennt kein onchange, sondern nur die darin enthaltenen Eingabefelder.
        Da habe ich mich dann missverständlich ausgedrückt.
        Der "onchange" hängt natürlich in der Checkbox.

        und was soll dann gegen this.form sprechen?

        Erst wenn diese Checkbox angeklickt wird, sollen weitere Eingabefelder erscheinen. Vorher nicht.

        Wie lautet Dein Problem?

        Aber da ja diese Zusatzeingaben dann noch mit anderen eingaben an ein anders Script gesendet werden sollen,

        Es wird nur ein Formular sinnvoll versendet werden können, und das nur an eine Adresse. Was Du mit einem andere Script meinst, ist mir unklar.

        Ich versuch´s jetzt ersteinmal mit onklick (@LX)zu realisieren. Da kenne ich mich zwar noch nicht großartig mit aus, aber mal sehen wie weit ich komme...

        "click" ist das Ereignis des Geklicktwordenseins. "change" ist das Ereignis des Geändertwordenseins. Was Du daraufhin machst, ist im Grundsatz davon unbeeinflusst, ob der Event-Handler "onclick" heißt, "onchange", "onmouseover" oder "onuserhasbirthday" - es ist mehr oder minder nur ein anderer Zeitpunkt.

        Cheatah

        --
        X-Self-Code: sh:( fo:} ch:~ rl:° br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
        X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
        X-Will-Answer-Email: No
        X-Please-Search-Archive-First: Absolutely Yes
  2. Versuch' mal onclick und prüfe dann this.selected.

    Gruß, LX

    1. Versuch' mal onclick und prüfe dann this.selected.

      Aber muss ich nicht auch bei "onklick" this.selected.
      ein eigenen Form-Tag nutzen?

      Ich muss doch irgendwie kennzeichnen, was passieren soll.
      Bei "onchange" this.form gehts mit nem Form-Tag.

      Hast Du zufällig nen Link zu den Optionen mit "onklick"?
      (Ich schnall die Suchfunktion hier irgendwie nicht so ganz)

      Danke und Gruß

      1. Mahlzeit Timo,

        Aber muss ich nicht auch bei "onklick" this.selected.
        ein eigenen Form-Tag nutzen?

        Nein, wieso? Abgesehen wäre die "http://de.selfhtml.org/javascript/objekte/options.htm#selected@title=selected"-Eigenschaft bei Checkboxen nicht optimal - dafür gibt's "http://de.selfhtml.org/javascript/objekte/elements.htm#checked@title=checked".

        Ich muss doch irgendwie kennzeichnen, was passieren soll.

        Richtig. Dafür schreibst Du in den Eventhandler entsprechenden Javascript-Code.

        Bei "onchange" this.form gehts mit nem Form-Tag.

        Was soll Deiner Meinung nach passieren, wenn Du in den "http://de.selfhtml.org/javascript/sprache/eventhandler.htm#onchange@title=onchange"-Eventhandler eines Formularelements einfach "this.form" hineinschreibst?

        Hast Du zufällig nen Link zu den Optionen mit "onklick"?

        Den hat http://de.selfhtml.org/javascript/sprache/eventhandler.htm#onclick@title=SELFHTML.

        (Ich schnall die Suchfunktion hier irgendwie nicht so ganz)

        ...

        MfG,
        EKKi

        --
        sh:( fo:| ch:? rl:( br:> n4:~ ie:% mo:} va:) de:] zu:) fl:{ ss:) ls:& js:|
  3. Mahlzeit Timo,

    Mein Problem ist jetzt, was für ein "Ereignis" in das onchange hinein muss.

    Gar keins. Das "onchange" IST das Ereignis. Wenn es eintritt, kann der Browser Javascript-Code ausführen ... wenn Du ihm sagst, welchen.

    "this.form" kann ich nicht nehmen, weil sich das ganze ja bereits in einem Form-Tag befindet.

    Sicher kannst Du das nehmen (und solltest es auch, wenn Du auf das aktuelle Formular zugreifen willst). Ich würde das ungefähr so machen:

    <script type="text/javascript">  
    [code lang=javascript]  
      
    function zusatzdaten(chk) {  
      var fs = document.getElementById('zusatzdaten_' + chk.id);  
      fs.style.display = (chk.checked) ? '' : 'none';  
    }
    

    </script>
    [...]
    <form>
    [...]
    <input type="checkbox" id="mehrfach" onclick="zusatzdaten(this);"><label for="mehrfach">Mehrfachtermin?</label>
    <fieldset id="zusatzdaten_mehrfach" style="display: none;">
      <legend>Zusatzdaten für Mehrfachtermine:</legend>
      [...]
    </fieldset>
    [...]
    </form>[/code]

    Mit einem "reload" erreiche ich ja auch nichts neues.

    Mit einem "reload" lädst Du die aktuelle Seite neu. Willst Du das?

    MfG,
    EKKi

    --
    sh:( fo:| ch:? rl:( br:> n4:~ ie:% mo:} va:) de:] zu:) fl:{ ss:) ls:& js:|
    1. Hallo Ekki,

      nach langem hin und her probieren sieht das wirklich gut aus.
      Scheint alles zu funktionieren. Jetzt fehlt nur noch der Feinschliff.

      Vielen Dank für Deine wirklich hilfreiche Hilfe :)

      Besten Gruß

      Timo

    2. Ich nochmal,

      eine Hintergrundfrage hätte ich da noch:

      Wo liegt der wesentliche Unterschied folgedner Schreibweisen:

      Deine:
      <input type="checkbox" id="mehrfach" onclick="zusatzdaten(this);"><label for="mehrfach">Mehrfachtermin?</label>

      Meine:
      <input type="checkbox" id="mehrfach" onclick="zusatzdaten(this);">Mehrfachtermin?

      Also auf den ersten Blick erkenne ich keinen Unterschied, aber ich denke mal, dass Du nicht ohne Grund "deine" Schreibweise hast.

      Danke Gruß Timo

      1. @@Timo:

        Wo liegt der wesentliche Unterschied folgedner Schreibweisen:

        Deine:
        <input type="checkbox" id="mehrfach" onclick="zusatzdaten(this);"><label for="mehrfach">Mehrfachtermin?</label>

        Meine:
        <input type="checkbox" id="mehrfach" onclick="zusatzdaten(this);">Mehrfachtermin?

        In der Usability. (Fitts’s law)

        Live long and prosper,
        Gunnar

        --
        Erwebsregel 208: Manchmal ist das einzige, was gefährlicher als eine Frage ist, eine Antwort.