paul: seite aktualisieren nach eingabe

hallo,
ich möchte in meinem warenkorb eine stückzahleingabe realisieren, die sich nach der eingabe selbst aktualisiert bzw. die daten an die db weiterreicht.

als fallback ohne js gibts auch einen post-button.

bei eingeschaltetem js möchte ich eine lösung, die folgendes berücksichtigt:
nicht nach jeder eingegebenen zahl soll refresehd werden, sondern erst, wenn die eingabe fertig ist.

probleme: woher weiss js, wann die eingabe fertig ist? nimmt man da ein timeout von z.b. 2 sek? onmouseout ist auch keine lösung, glaub ich- schliesslich kan man mit der maus raus, und mit der tastatur weiterschreiben, ganz zu schweigen von barrierearmer bedienung ohne maus.

wie wird sowas (ich hab es schon öfter gesehen) normalerweise realisiert?
könnt ihr beispiele nennen bzw mir einen prinzipiellen lösungsansatz nennen?

(eine notlösung wäre eine select liste mit allen werten, ich hätte aber gerne die "freie" eingabe von werten realisiert...)

danke!

p

  1. Hallo Paul,

    ich möchte in meinem warenkorb eine stückzahleingabe realisieren, die sich nach der eingabe selbst aktualisiert bzw. die daten an die db weiterreicht. als fallback ohne js gibts auch einen post-button.

    allein von der Überlegung her ist das Bestellen eine aktive Handlung, die an ein nutzerbestimmt ausgelöstes Event gebunden ist. Das ist im Rahmen der Erwartung eines Nutzers. Daher sollte sich der Griff zu timeout-Lösungen, onmouseout oder onblur von vornherein erübrigen. Sie könnten den Nutzer verwirren oder sogar verunsichern.

    Ohne Javascript wird also auf einen Bestell-Button gedrückt. Warum soll das bei aktivem Javascript nicht auch so sein?

    Gruß aus Berlin!
    eddi

    1. moin,

      allein von der Überlegung her ist das Bestellen eine aktive Handlung,[..]

      Ohne Javascript wird also auf einen Bestell-Button gedrückt. Warum soll das bei aktivem Javascript nicht auch so sein?

      Es wäre evntl. damit machbar, dass sich der Warenkorb schon im 'Vorbeigehen' mit Waren füllt, da brauchts nur noch eine geschickte Aufstellung der 'Regale', damit am Ende des Einkaufslabyrinths die Kasse richtig klingelt ;-)

      SCNR;
      Rolf

    2. allein von der Überlegung her ist das Bestellen eine aktive Handlung, die an ein nutzerbestimmt ausgelöstes Event gebunden ist.

      Ich vermute, dass es hier noch nicht um die Bestellung selbst geht...
      @Paul:
      Ich sehe hier zweieinhalb Möglichkeiten:
      1. Du aktualisierst nur für den Benutzer die Ansicht mit JS aber trägst noch nichts in die DB ein, sondern bestenfalls in den Cookie. Mit dem Submit schreibst du es dann in die DB.
      2. Deine Timeout-Lösung: Überwache die Eingabe, wenn der Wert sich ändert setzt du eine Variable auf beispielsweise deine zwei oder vier Sekunden und zählst dann runter. Erreicht die Variable 0 schickst du dein AJAX ab. Erfolgt in der Zwischenzeit eine Eingabe wird die Zählvariable ja wieder zurück gesetzt. Du kannst natürlich auch hoch statt runter zählen ^^
      3. Verwende weder Timeout noch mouseout, sondern das Event, welches feststellt, dass das Eingabefeld keinen Fokus mehr hat (blur?). Dann Erfolgt das Speichern wenn der Benutzer ins nächste Anzahl-Feld geht oder auf "post" tippt oder einen Link oder sonst was. Kann aber sein, dass beim Verlassen der Seite (insbesondere Fenster schließen "zurück"-Funktion des Browsers etc.) das Event nicht feuert.
      Letztlich wirst du aber wahrscheinlich eh eine Art Zusammenfassung der Bestellung vor der endgültigen Bestätigung haben und dort sieht der Benutzer ja wenn die DB irgendwas nicht übernommen hat.

      --
      sh:( fo:| ch:? rl:( br:& n4:& ie:{ mo:} va:) de:µ_de:] zu:) fl:( ss:| ls:[ js:(