kostenloser Webspace werbefrei: lima-city


jQuery automatisch speichern, während der Texteingabe

lima-cityForumDie eigene HomepageHTML, CSS & Javascript

  1. Autor dieses Themas

    speedtouch92

    Kostenloser Webspace von speedtouch92

    speedtouch92 hat kostenlosen Webspace.

    Moin Moin,

    ich habe momentan ein Textfeld, welches, wenn es gefüllt wird, die Daten per AJAX an einen Server sendet, der diese abspeichert.
    Momentan wird ein Request pro Tastendruck gemacht, was bei einem längeren Text den Server auf Trab hält und meine Logs zumüllt.

    Macht jemand von euch etwas ähnliches?
    Ich habe mir gedacht, ich warte einfach 3 Sekunden und sende dann erst den Request los, aber weiß nicht, wie ich das realisieren kann, dass der Timer immer wieder zurückgesetzt wird, wenn man tippt.

    Bisher sieht mein Code so aus:

    $(".new_comment_box").keyup(function() {
        var text_field = $(this);
        $.ajax({
          url: "/",
          data: {new_comment:text_field.val()},
          error: function() {
            $("#infodialog").html("There was an error saving your comment.");
            $("#infodialog").dialog("open");
          }
        });
      });
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. anti-atomkraft

    Kostenloser Webspace von anti-atomkraft

    anti-atomkraft hat kostenlosen Webspace.

    Wie wär's damit?
    var old_time=0, time=0;
    $(".new_comment_box").keyup(function() {
        var text_field = $(this), date=new Date(), old_time=time, time=date.getTime();
    if(old_time+60*3<time){
        $.ajax({
          url: "/",
          data: {new_comment:text_field.val()},
          error: function() {
            $("#infodialog").html("There was an error saving your comment.");
            $("#infodialog").dialog("open");
          }
        }); }
      });
  4. Autor dieses Themas

    speedtouch92

    Kostenloser Webspace von speedtouch92

    speedtouch92 hat kostenlosen Webspace.

    So wie ich das Verstehe funktioniert das so:

    => Ich gebe ein: "test test test"
    => Ich warte eine Sekunde
    => Ich gebe ein: "test"
    => nichts passiert, da keine 3 Sekunden um sein
    => ich warte 3 Sekunden
    => nichts passiert, da das keyup nichtmehr aufgerufen wird

    Also muss man vor der Eingabe des letzten Zeichens 3 Sekunden warten, damit gespeichert wird

    oder verstehe ich das falsch?
  5. Hallo,

    wenn ich dich richtig verstehe, dann möchtest du die Daten nur senden, wenn innerhalb von 3 Sekunden nichts weiter eingegeben wurde, oder?
    Dann versuche mal setTimeout und clearTimeout z.B. so:
    var handle=false;
    $(".new_comment_box").keyup(function() {
        var text_field = $(this);
        if (handle) window.clearTimeout(handle);
        handle = window.setTimeout(function(){
            $.ajax({
                url: "/",
                data: {new_comment:text_field.val()},
                error: function() {
                    $("#infodialog").html("There was an error saving your comment.");
                    $("#infodialog").dialog("open");
                }
            });
        }, 3000);
    });


    Gruß
  6. Autor dieses Themas

    speedtouch92

    Kostenloser Webspace von speedtouch92

    speedtouch92 hat kostenlosen Webspace.

    Danke,
    das ist genau das, was ich gesucht habe :)
    Funktioniert super.
  7. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!