DiamondDog84: Auf Button Sperrzeit einblenden

Hallo Leute,
also ich hab da das nachfolgende Script,
welches auch super funktioniert.
Nur ich möchte die Zeit der Sperre das Buttons,
auf dem Button einblenden.
Kann mir da vll jemand helfen?

<input type="Button" value="Download" onClick="if (!sperre()) return; alert ('action');window.open('http://www.google.de');">

<script language="JavaScript">
var last_click = 0;
function sperre() {
if ( (last_click == 0) || (new Date().getTime() - last_click > 10000) ) {
last_click = new Date().getTime();
return true;
}
else
{
return false;
}
}
</script>

Hab dazu auch noch ein anderes Script gefunden,
nur das macht das was ich haben möchte,
leider sofort bei Seitenaufruf
und nicht bei onclick.

<script type="text/javascript">
<!--
var Sekunden = 10;
var Buttonbeschriftung = "Abschicken";

document.getElementById('Send').disabled = true;

for(i = 1; i <= Sekunden; i++)
{
    window.setTimeout("ButtonAktualisieren(" + i + ")", i*1000);
}

window.setTimeout("ButtonFreigeben()", Sekunden*1000);

function ButtonAktualisieren(VergangeneSekunden)
{
    if(VergangeneSekunden == Sekunden)
    {
        document.getElementById('Send').value = Buttonbeschriftung;
    }
    else
    {
        Restsekunden = Sekunden-VergangeneSekunden;
        document.getElementById('Send').value = Buttonbeschriftung + " (" + Restsekunden + ") ";
    }
}

function ButtonFreigeben()
{
    document.getElementById('Send').disabled = false;
}
//-->
</script>

  1. Hallo Leute,
    also ich hab da das nachfolgende Script, welches auch super funktioniert.
    Nur ich möchte die Zeit der Sperre das Buttons, auf dem Button
    einblenden.

    Mahlzeit!

    Nimm das Script und erweitere es mit eine "setTimeout()" Javascript, Anweisung. Gleichzeitig kannst du den Text auf dem Button ändern...

    Musst nur die Zeit im "Timeout" mit der Funktion zur Änderung des Buttonstexts abgleichen.

    Gruß,
    Mr.Luke

    1. Hab jetzt einwenig gegoogelt
      und das hiergefunden:

      Für die Beschriftung vom Button:
      {
      document.getElementById('Send').value = "Gesperrt";
      }

      und das,
      für die Zeitanzeige des Button:
      window.setTimeout("Buttontext(4);", 1000);
      window.setTimeout("Buttontext(3);", 2000);
      window.setTimeout("Buttontext(2);", 3000);
      window.setTimeout("Buttontext(1);", 4000);
      window.setTimeout("Buttontext(0);", 5000);

      Leider hab ich keine ahnung wo und wie ich das ins Script einbauen muss,
      ein bischen Hilfe wäre da echt super.

      1. Hey Leute hab so zu sagen mal neu angefangen,
        nur komm jetzt wieder nicht mehr weiter.
        Also ich habs hinbekommen den Button zu deaktivieren,
        nur das Problem ist ich weiß nicht,
        wo ich den Befehl hinsetzen muß das er nach den 10 sec,
        der  Button wieder aktiviert wird.
        Mein 2tes Problem ist das er die Restsekunden,
        auf dem Button anzeigen soll und ich keine Ahnung habe,
        was ich da wo wie hinschreiben muß.
        Hier der Button:
        <input id="Send1" type="Button"  name="button1" value="Download" onClick="sperre(); window.open('http://www.google.de');">

        Und hier das Script:
        <script typ="text/javascript">
        var last_click = 0;
        var Buttonbeschriftung = "Button";
        var Restsekunden = "sec";
        function sperre()
        {
        if ( (last_click == 0) || (new Date().getTime(a*10000) - last_click > 10000) )
        {
        document.getElementById('Send1').disabled = true;
        document.getElementById('Send1').value = Buttonbeschriftung + " (" + Restsekunden + ") ";
        last_click = new Date().getTime();
        return true;
        }
        else
        {
        return false;
        }
        }
        </script>
        Mal neben bei kennt vll jemand eine Seite wo es sowas schon fertig gibt?
        Ich hab biß jetzt nur Script gefunden,
        wo der Button vom öffnen der Seite anfängt auf 0 zu zählen
        und dann Aktiv wird aber ich möchtees ja so haben,
        wenn der Button geklickt wurde soll er die 10 sec runterzählen.

  2. Mahlzeit,

    Nur ich möchte die Zeit der Sperre das Buttons,
    auf dem Button einblenden.
    Kann mir da vll jemand helfen?

    <input type="Button" value="Download" onClick="if (!sperre()) return; alert ('action');window.open('http://www.google.de');">

    Erstmal ist es nicht besonders übersichtlich, wenn Du in den Wert eines Eventhandler-Attributs viel mehr als einen Funktionsaufruf hineinschreibst - insbesondere wenn es noch Verzweigungen und mehrere Anweisungen sind. Schreibe Dir eine Funktion, die beim Klick aufgerufen wird (und dabei z.B. <http://de.selfhtml.org/javascript/sprache/objekte.htm#this@title=das aktuelle Objekt> als Parameter übergeben bekommt) und dann die weiteren Überprüfungen und die Verarbeitung übernimmmt.

    <script language="JavaScript">

    Das "language"-Attribut ist veraltet. Merkwürdig finde ich übrigens, dass Du es hier verwendest und hier

    <script type="text/javascript">
    <!--

    nicht. Zudem kommentierst Du den zweiten Block (der eigentlich laut Angaben im "type"-Attribut nur Javascript-Anwendungen enthalten sollte, nicht jedoch HTML) aus. Weißt Du überhaupt, was Du tust, oder kopierst Du nur einfach irgendwelche evtl. passenden Skripte zusammen und hoffst, dass sie schon irgendwie funktionieren?

    Hab dazu auch noch ein anderes Script gefunden,
    nur das macht das was ich haben möchte,
    leider sofort bei Seitenaufruf
    und nicht bei onclick.

    Kein Wunder.

    var Sekunden = 10;
    var Buttonbeschriftung = "Abschicken";

    document.getElementById('Send').disabled = true;

    In dem von Dir gezeigten HTML befindet sich kein Element, das die ID "Send" trägt. Wenn es eins gäbe, würde es allerdings beim Ausführen dieses Javascript-Codes (was direkt nach dem Laden geschieht) ausgegraut.

    for(i = 1; i <= Sekunden; i++)
    {
        window.setTimeout("ButtonAktualisieren(" + i + ")", i*1000);
    }

    Du setzt hier insgesamt 10 Timeouts. Wieso?

    document.getElementById('Send').value = Buttonbeschriftung + " ("

    Abgesehen davon, dass es dieses Element in dem von Dir geposteten HTML-Code nicht gibt (s.o.), siehst Du hier, wie Du die Beschriftung des Buttons ändern kannst.

    Wann und wie das geschehen soll, ist mir nicht so ganz klar - vielleicht könntest Du mal nachvollziehbar beschreiben, was Du eigentlich willst, anstatt nur (vermutlich nicht einmal von Dir stammende) Codeschnipsel zu posten und auf ein Wunder zu hoffen?

    MfG,
    EKKi

    --
    sh:( fo:| ch:? rl:( br:> n4:~ ie:% mo:} va:) de:] zu:) fl:{ ss:) ls:& js:|
    1. @ EKKi
      Also ich habe folegenden code der auch funktioniert wie er soll:

      <script language="JavaScript">
      var last_click = 0;
      function sperre() {
      if ( (last_click == 0) || (new Date().getTime() - last_click > 10000) ) {
      last_click = new Date().getTime();
      document.Eingabe.button1.value = "noch " + sek + " Sekunden";
      return true;
      }
      else
      {
      return false;
      }
      }
      </script>

      <input type="Button"  name="button1" value="Download" onClick="if (!sperre()) return; alert ('action');window.open('http://www.google.de');">

      Also wenn ich jetzt auf den Button klicke wird er für eine bestimmte Zeit,
      gesperrt.
      Und was ich noch dort mit drinhaben möchte ist das dies Zeit die Verstreicht,
      nachdem der Button geklickt wurde also die gesperrte Zeit,
      diese soll auf dem Button angezeigt werden.
      Hoffe das war jetzt verständlicher.
      Mir wurde dazu ja jetzt gesagt,
      ich muß mit setTimeout arbeiten
      und die beschriftung des Buttons damit ändern.
      Würd ich alles gerne tuhn,
      aber ich hab ja noch nciht mal die Ahnung wo ich es einbauen müste.

      1. Mahlzeit,

        Würd ich alles gerne tuhn,
        aber ich hab ja noch nciht mal die Ahnung wo ich es einbauen müste.

        Und Du scheinst auch nicht besonders motiviert, Dich in die Materie hineinzulesen bzw. zu -arbeiten. Zumindest ist der Code immer noch derselbe wie in Deinem ursprünglichen Posting, obwohl Mr.Luke und ich schon ein paar Tipps gegeben haben, wie Du was ändern könntest.

        1. Nimm das ganze Geraffel aus dem "onclick"-Attribut raus. Rufe beim Klicken eine http://de.selfhtml.org/javascript/sprache/funktionen.htm#definieren@title=Funktion auf (der Du sinnvollerweise <http://de.selfhtml.org/javascript/sprache/objekte.htm#this@title=das aktuelle Objekt> als Parameter übergibst - ansonsten hast Du nämlich Probleme, wenn Du mehrere solcher Buttons hast, den Namen des Formulars oder des Buttons änderst usw.).

        2. Wenn der Button http://de.selfhtml.org/javascript/objekte/elements.htm#disabled@title=aktiv ist, sperre ihn in dieser Funktion, <http://de.selfhtml.org/javascript/objekte/elements.htm#value@title=ändere seinen Wert> und <http://de.selfhtml.org/javascript/objekte/window.htm#set_timeout@title=setze einen Timeout> nach einer Sekunde auf eine andere Funktion.

        3. Diese andere Funktion überprüft bei ihrem Aufruf, ob die definierte Zeit schon vergangen ist. Wenn nicht, ändert sie erneut den Wert des Buttons und setzt sie wieder einen Timeout nach einer Sekunde auf sich selbst. Wenn ja, tut sie, was auch immer Du willst.

        MfG,
        EKKi

        --
        sh:( fo:| ch:? rl:( br:> n4:~ ie:% mo:} va:) de:] zu:) fl:{ ss:) ls:& js:|
        1. [latex]Mae govannen![/latex]

          1. Wenn der Button http://de.selfhtml.org/javascript/objekte/elements.htm#disabled@title=aktiv ist, sperre ihn in dieser Funktion, <http://de.selfhtml.org/javascript/objekte/elements.htm#value@title=ändere seinen Wert> und <http://de.selfhtml.org/javascript/objekte/window.htm#set_timeout@title=setze einen Timeout> nach einer Sekunde auf eine andere Funktion.

          2. Diese andere Funktion überprüft bei ihrem Aufruf, ob die definierte Zeit schon vergangen ist. Wenn nicht, ändert sie erneut den Wert des Buttons und setzt sie wieder einen Timeout nach einer Sekunde auf sich selbst. Wenn ja, tut sie, was auch immer Du willst.

          Und warum dann nicht gleich ein setInterval, das einmal angestoßen wird und solange automatisch ausgeführt wird, bis es in der aufgerufenene Funktion beim Erreichen des Sollwertes beendet wird?

          Cü,

          Kai

          --
          Die kleinen Mädchen aus der Vorstadt tragen heute Nasenringe aus Phosphor
          Die Lippen sind blau, die Haare grün, Streichholzetiketten am Ohr
          Aus den Jackentaschen ragen braune Flaschen so sieht man sie durch die Strassen ziehn
          überall wo sie vorübergehen hängt in der Luft ein Hauch von Benzin
          ie:{ fl:( br:< va:) ls:? fo:| rl:? n4:° ss:{ de:] js:| ch:? mo:| zu:|]