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:(