KeyUp Event blockiert


jaqen h'ghar

Grünschnabel
Hallo zusammen,

Nach Änderung der Stückzahl in einem Input-Element, soll der Preis neu berechnet werden, daher wird über das ein KeyUp-Event ein Ajax-Aufruf gestartet, wodurch dann weitere Eingaben im Input-Feld irgendwie zeitweise geblockt werden. Z.B. steht bei 3x schnellem Tippen der Ziffer 1 nur 11 an Stelle von 111 im Feld, als hätte man nur 2x gedrückt.

Hat jemand irgendeine eine Ahnung?

Code:
$('#input').keyup(() => {
            webservice.call("1234", "4321");
});

//Webservice
public call(customerID: string, articlenumber: string) {
        $.ajax({
            async: true,
            type: 'POST',
            url: "../ctrl/SOAP.ctrl.php",
            data: {
                'action': "getVK",
                'datas': '{"SOAP":"GetVK", "customerID":"' + customerID + '", "articlenumber":"' + articlenumber + '"}'
            },
            success: (result) => {
                    //Do Something
            }
        });
 
Zuletzt bearbeitet:

jaqen h'ghar

Grünschnabel
Okey ich dachte irgendwie dass Events in Javascript asynchron ausgeführt werden, was ja nicht der Fall ist.
Aber wie könnte man dieses Problem lösen?
 

jaqen h'ghar

Grünschnabel
Danke für den Tip Basti, leider hat es mit dem Keydown auch nicht geklappt.

Habe jetzt mit setTimeout und einer Callback Funktion gelöst:

Code:
$('#input').keyup(() => {
...
            setTimeout(()=>{
                webservice.call("1234", "4321", ()=>{refreshPrice()}
              }, 0);
  });

//Webservice
public call(customerID: string, articlenumber: string, callback: Function) {
        $.ajax({
            async: true,
            type: 'POST',
            url: "../ctrl/SOAP.ctrl.php",
            data: {
                'action': "getVK",
                'datas': '{"SOAP":"GetVK", "customerID":"' + customerID + '", "articlenumber":"' + articlenumber + '"}'
            },
            success: (result) => {
            ...
                    callback();
            }
        });
 

Neue Beiträge