Im nachhinein onClick zuweisen

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Im nachhinein onClick zuweisen

    Hallo

    Ich würde gerne in einer Funktion einem Button eine Aktion zuweisen die onClick funktioniert. Habs so versucht:

    function test(){
    document.form.button.onClick="javascript:document.form.submit()";
    }

    Geht aber leider nicht. Ins <INPUT> Tag kann ichs net schreiben, weil ich es über eine Funktion im Nachhinein ansteuern muss. Ich hoffe, dass dies überhaupt irgendwie möglich ist. Ich bin auch nicht wirklich gut was JS angeht und löse nur selten einige kleine Komfortablitäten damit, darum endet mein Latein auch schon hier. Für Hilfen wär ich super dankbar.

    Grundsätzlich gehts mir darum, dass ein Formular in einem PHP Script nachdem es einmal abgeschickt wurde für einige Sekunden nicht mehr geklickt werden darf. Ich löse dies zuerst in PHP.

    if($signstop)
    {
    echo '<input type="button" class="'.$gb_stl_button.'" name="button_sign" value=" '.$timeleft.' ">';
    }
    else
    {
    echo '<input type="submit" class="'.$gb_stl_button.'" name="button_sign" value="Sign">';
    }

    Das gilt nun eben für alle die JS nicht im Browser ausführen. Für die mit JS wird danach noch ein kleines Script gestartet, welches aus dem Nutzlosen Button einen Timer macht der nach unten tickt. Sobald er 0 erreicht hat und die Zeitsperre aufgehoben ist, soll er aus dem Simplen Button eben wieder einen Submitbutton machen:

    document.form_sign.button_sign.disabled=false;
    document.form_sign.button_sign.value = "Sign";

    Nur wie gebe ich ihm so im Nachhinein onClick Funktionalität? Oder gehe ich die Sache vieleicht auch komplett verkehrt an?

    Für Hilfe wär ich super Dankbar!

    Thx
    Phish

  • #2
    hab nicht alles so genau gelesen, aber ich würde dies so machen:

    inputfeld machen und "aktionslistener" anhängen

    <input type="Button" onclick="javascript:test()">

    dann ein js:

    <script language="javascript">
    function test()
    {
    document.formname.submit();
    }
    </script>

    hoffe ich hab dein problem richtig erkannt
    First: Things get worse under pressure.
    Second: If anything just cannot go wrong, it will anyway
    Third: A falling object will always land where it can do the most damage.

    Kommentar


    • #3
      Wenns nicht dymanisch geht, ist Vipers Ansatz der Beste. Man kann ihn folgendermassen ausbauen:



      <input type="Button" onclick="javascript:test()">

      dann ein js:

      <script language="javascript">

      buttonOnclick = ""; // Am Anfang nix tun

      function test()
      {
      eval (buttonOnclick);
      }
      </script>

      später weist Du dann ein onClick folgendermassen zu:

      buttonOnclick = "document.form1.submit();";

      Kommentar


      • #4
        Hallo

        Juhu, ne Antwort *fröi*

        Leider ist das nicht ganz was ich suche. Mein Problem ist folgendes.

        Angenommen das Zeitlimit ist noch nicht abgelaufen:
        Das PHP Script schreibt anstatt des Submitbuttons einen simplen Button welcher nix tut und auf welchem steht wie viele Sekunden noch zu warten sind.

        Ein User der kein JS hat (es abgeschalten hat):
        Sieht eben nur diesen Button und kann nix tun, nur den Browser refreshen und zusehen wie jedesmal auf dem Button eine kleinere Sekundenzahl steht welche noch zu warten ist.

        Ein User der JS har:
        Bei ihm wird eine Funktion gestartet welche den Button disabled und anstelle der simplen noch zu wartenden Sekundenzahl einen Counter auf den Button schreibt. So sieht man einen grau Schattierten Button langsam runter auf 0 zählen. Bei Null schreibt die Funktion auf den Button das Wort "Sign" und enabled ihn wieder. So dass der user ihn jetzt drücken könnte. Aber der Button hat ja noch immer keine Submitfunktion. Und diese müsse das Programm ihm jetzt auch verleihen.

        Das ist mein Problem.
        Wie kann ich einem Button eines Formulares im Nachhinein eine onClick Funktion geben. Oder mache ich da grundsätzlich was falsch?

        Danke vielmals
        Phish

        Kommentar


        • #5
          onclick="javascript:test()"
          leute, gewöhnt euch dochmal diesen mist ab!

          onClick ist bereits teil von javascript, und deshalb macht es a) keinen sein, den zugewiesenen wert nochmals mit "javascript:" zu beginnen, und b) ist es überdies noch falsch.
          I don't believe in rebirth. Actually, I never did in my whole lives.

          Kommentar


          • #6
            Hallo

            Eure Vorschläge haben mich auf Ideen gebracht, ich werds wohl etwas Javascriptlastiger lösen, dann funktioniert di choose bestimmt.

            Danke vielmals

            Phish

            Kommentar


            • #7
              Wie Du einem Button im Nachhinein eine Submit-Funktion geben kannst, steht in meinem Post!

              Ich weiss nicht wofür du das brauchst, aber es wird bei nicht-JS-Nutzern Probleme geben - wo kein JS ist, kannst Du auch keinen js-Countdown machen.

              Kommentar


              • #8
                Hallo

                Der Countdown ist ja auch egal... ist nur um das ganze Komfortabler zu machen. Meine Sites laufen alle ohne JS per PHP wunderbar. Aber mit JS bewegt sich halt ein Counter wo ohne nur steht wie viele Sekunden man noch warten muss....

                Bye
                Phish

                Kommentar


                • #9
                  Woher weisst du wie lange es noch geht bei einem Formular-Submit?

                  Kommentar


                  • #10
                    Hallo

                    Das löse ich mit einer PHP Session.
                    Das Formular wird an die eigene Seite geschickt. Bei jedem neuen laden der Site wird gecheckt ob gewisse Variablen übertragen wurden. Ist dies der Fall wird die Funktion aufgerufen, welche die Eingaben des Formulars aus den Variablen ausliest und in die Datenbank speichert. Und dann speichert es die aktuelle Zeit in eine Variable welche über die Session hinweg erhalten bleibt. Wenn nun jemand die Seite erneut aufruft um sich ins Gästebuch einzutragen wird erst gecheckt ob. Variable_Zeitbeiletztemeintrag + Variable_Wartezeit > AktuelleZeit ist. Nur wenn dies der Fall ist, wird wieder das normal auszufüllende Formular geladen, ansonsten kommen wir zum Szenario, welches mir das JavaScriptproblem bescherte....

                    Bye
                    Phish

                    Kommentar


                    • #11
                      Klingt kompliziert. Versteh ich nicht ganz: Woher weisst Du, wie schnell der Response für das Formular zurückkommt? Wenn mein Knoten gerade verstopft ist? Das liegt ja nicht nur an der Serverleistung...
                      Nur Interessehalber.

                      Kommentar


                      • #12
                        Hallo

                        Hmm, sowas sollte doch kein Problem sein.... zugegebenermassen wird die Zeitmarke eines Eintrages wirklich erst kurz vor dem Eintrag in die DB gesetzt. Wenn ich also mein Gästebuch so konfiguriere dass man 5 Minuten nach einem Posting nicht mehr neu Posten darf, dann sind das 5 Minuten + die Zeit die Anfangs benötigt wurde um die Seite neu zu laden nachdem man Submit geklickt hat. Auch sonst können mal ein paar Teilsekunden verloren gehen. Aber das stört ja nicht wirklich, obs jetzt 60 Sekunden oder 62 sind....

                        Bye
                        Phish

                        Kommentar


                        • #13
                          Ach sooo. Jetzt versteh ich. Ich dachte, es geht dir um eine Voraussage, wann ein Formular fertig bearbeitet ist. Mit der Zeitsperre wird mir das klarer.

                          Kommentar


                          • #14
                            Sorry mein Fehler :-) Wenn ich eben gerade wo häng, dann schreib ich recht schnell und unklar :-(

                            Ich werde wohl heute Abend endlich daran weitermachen können, dann versuch ich das Problem endlich zu lösen....

                            Nochmals Danke
                            Phish

                            Kommentar

                            Lädt...
                            X