Ankündigung

Einklappen
Keine Ankündigung bisher.

Variable nach bestimmter Zeit x wieder zurücksetzen

Einklappen

Neue Werbung 2019

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

  • Variable nach bestimmter Zeit x wieder zurücksetzen

    Hallo, ich habe in einer Webseite ein Formular bei dem die eingegebenen Daten sofort geprüft werden sollen. Die Funktion an sich ist kein Problem, ich nutze hierbei eine einfache AJAX/PHP Abfrage. Ich möchte hierbei nicht auf das "onChange" Event zurückgreifen und weiterhin ein "onKeyUp" Event als Auslöser nutzen.

    Hier mein Script auf das wesentliche gekürzt:
    Code:
    <script type="text/javascript">
    <!--
    // gibt an ob bereits eine Anfrage gesendet wurde
    abfrage = false;
    
    function InfoBox(value) {
        // Keine Anfrage senden wenn bereits eine gestartet wurde
        if (abfrage) return;
        
        // weitere Abfragen sperren
        abfrage = true;
        // Anfrage senden
        sende_anfrage(value);
        // Hier liegt das Problem, nach der Zeit x sollte die Abfrage wieder freigegeben werden
        window.setTimeout('abfrage = false', 1000);
    }
    -->
    </script>
    Ein Textfeld löst mit dem "onKeyUp" Event die Funktion InfoBox('this.value') aus, leider funktioniert es nicht so wie ich gedacht hatte.

    Wie bekomme ich hier eine Art Zeitverzögerung rein?
    Gibt es eine Art "sleep" Funktion für Java?

    Gruß mAy

  • #2
    wollte dich gerade auf window.setTimeout () hinweisen, bis ich deine funktion richtig gelesen habe. die sprache heißt übrigens javaScript!

    mal ne frage: wie soll denn setTimeout aufgerufen werden, wenn die funktion schon in der ersten zeile mit return verlassen wird??

    function InfoBox(value) {
    // Keine Anfrage senden wenn bereits eine gestartet wurde
    if (abfrage) return;

    // weitere Abfragen sperren
    abfrage = true;
    // Anfrage senden
    sende_anfrage(value);
    // Hier liegt das Problem, nach der Zeit x sollte die Abfrage wieder freigegeben werden
    window.setTimeout('abfrage = false', 1000);
    }
    also setTimeout nach vorne und schon funktionierts, wenn ich deine frage richtig verstanden habe...

    Kommentar


    • #3
      Naja, das setTimeout wird ja beim ersten Aufruf erreicht, die Variable "abfrage" hat ja als Startwert "false". Erst eine Zeile über dem setTimeout wird sie auf "true" gesetzt und verhindert somit jede weitere Anfrage. Das Problem ist das die Variable "abfrage" nicht nach der Zeit wieder auf "false" zurückgesetzt wird. Die erste Abfrage wird ausgeführt und das wars dann, jeder weitere Aufruf der Funktion führt zum Abbruch.

      Hier liegt also mein Problem: window.setTimeout('abfrage = false', 1000);
      "abfrage" wird nicht auf "false" gesetzt

      Guß mAy

      // Edit: Mein Problem hat sich gelöst, ich hatte einen Fehler in meinem Script. Habe dummerweise document.setTimeout() geschrieben, hier natürlich richtig window.setTimeout() - so kann mir keiner helfen

      Kommentar


      • #4
        hast recht, hatte nen knick im denk...

        Kommentar

        Lädt...
        X