ajax und jquery barcode scanner?
Hallo an alle,
ich habe einfach nur eine Textbox, wo ich mit einem Barcode scanner einen code scanne und der diesen in die Textbox reinschreibt, jetzt muss ich nur noch enter drücken und er führt mir ein php script aus und zeigt mir das ergebniss unter der Textbox an, das funktioniert auch alles ohne probleme so.
ich will jetzt aber das ich anstatt enter den code einfach nur scannen muss und er den code automatisch ausführt. das geht mit keyup, das problem ist aber wenn ich submit zu keyup ändere und dann den code scanne, löscht der code $('#ud_form')[0].reset(); das Textfeld anscheinden zu schnell, und er zeigt mir das ergebniss nur ganz kurz an und dann ist es wieder weg.
hat jemand eine idee wie ich das so hin bekomme mit dem keyup?
kann ich dazwischen einen Timer einbauen oder warum zeigt er es mir nur ganz kurz an und löscht dann alles wieder obwohl das ergebniss in einer eigenen div angezeigt wird?
3 Antworten
Ich seh keinen Grund das in ein form-tag zu packen. Dann machst du einfach sowas in der art
barcode.bind("keyup input paste", function() {
if (barcodeIsValid()) {
sendRequest();
}
});
in barcodeIsValid() überprüfst du ob der barcode ein gültiger ist (weiß nicht ob die immer nen festen aufbau, also länge oder sowas haben) und dann sendest du das zu deinem server. (evtl gibts für sowas sogar was clientseitiges oder?)
dein server sendet dann entweder ein ergebnis oder eben nichts. das überprüfst du dann in
...
success: function(data) {
if (data.was_valid) {
$("#ud_form").reset();
$("#ud_output").html(data.text);
}
}
irgendwie so sollte das auch ohne irgendeine art timeout möglich sein.
falls du das wirklich mit timeout machen willst (was allerdings alles andere als eine gute lösung dafür ist) dann könntest du zb sowas machen
let active = false;
...
success: function(data) {
if (!active) {
$("#ud_form").reset();
$("#ud_output").html(data.text);
}
active = true;
setTimeout(function() {
active = false;
}, 5000);
Hast du einmal geprüft, wie oft das keyup-Event ausgelöst wird? Ich denke, dass du den Request öfter als einmal abschickst.
Du resettest doch das Outputfenster garnicht, oder ist $('#ud_form')[0] dein Outputfenster?
Funktioniert es denn ohne das Reset?
das ist es ja, wenn ich die funktion mit submit schreibe, den code scanne und dann enter drücke funktioniert alles und er zeigt mir auch alles an, aber wenn ich submit zu keyup ändere, den code dann scanne, fügt er ihn ein, führt automatisch das script aus und zeigt das ergebniss ganz kurz an und dann ist es wieder weg
es funktioniert leider mit keiner Funktion die Sie geschrieben haben