Javascript/Vue - Enter automatisch einfügen?

2 Antworten

Ein passendes Event bietet flatpickr wohl nicht, daher müsstest du selbst einen Event-Handler an das input-Element hängen (welches von flatpickr generiert wird) und auf das input-Event lauschen. In Vue solltest du aber zunächst warten, bis alle Komponenten geladen wurden. Verwende die mounted-Funktion dafür. In dieser holst du dir das input-Element, hängst den Listener an und prüfst bei Aufruf, ob der aktuelle Wert valid ist. Wenn ja, speicherst du ihn.

werdas34 
Fragesteller
 02.07.2019, 19:56

Kann ich das nicht mit @onchange lösen? Müsste nur irgendwie an die eingebenen Zahlen kommen.

0
regex9  02.07.2019, 20:02
@werdas34

Das change-Event wird erst ausgelöst, wenn sich der Feldwert geändert hat und der Fokus wieder vom Feld genommen wurde.

0
werdas34 
Fragesteller
 02.07.2019, 20:08
@regex9

Der Wert ändert sich bei der Eingabe und es reicht wenn sich die Variable erst ihren Wert bekommt wenn der Fokus woanders ist.

0
werdas34 
Fragesteller
 02.07.2019, 20:54
@regex9

Die Eingabe ist erst null, dann kommen die Zahlen. Das sollte doch reichen das onchange auszulösen, oder?

0
regex9  02.07.2019, 21:01
@werdas34

Wie gesagt, das change-Event wird erst ausgelöst, wenn der Fokus vom Eingabefeld wieder genommen wird. Das passiert bspw., nachdem man irgendwo auf die Seite klickt oder die Tab-Taste bedient.

0
werdas34 
Fragesteller
 02.07.2019, 21:05
@regex9

Dies ist ja bei mir garantiert, entweder durch Eingabe weiterer Input Felder oder durch den Bestell-Button, der erst die Validierung macht. Also spätetestens beim Bestell-Button würde es azsgelöst werden. Die Frage, die ich mir stelle: Wie komme ich an die Werte die in flat-pickr stehen ran?

https://flatpickr.js.org/events/

Ich würde mit onClose arbeiten. Jedoch wie komme ich an diese Werte? Damit ich sie in das v-model laden kann?

0
regex9  02.07.2019, 21:37
@werdas34

Laut Dokumentation werden dem Event Handler Argumente übergeben, wie dateStr.

0
werdas34 
Fragesteller
 02.07.2019, 23:12
@regex9

Habe jetzt einiges ausprobiert. Die Events helfen mir alle nichts. Egal was ich mache, man muss erst enter drücken, bzw ein Datum im Kalendar wählen.

Hast du eine Idee, wie ich ein Geburtsdatum vom Anwender abfrage, mit flatpickr ohne das er Enter drücken muss?

0

Du meinst, dass er nicht den bestätigen button drückrn muss?

werdas34 
Fragesteller
 03.07.2019, 02:34

Der Kunde hat drei Möglichkeiten, wenn man davon ausgeht dass das Datum Format richtig eingegeben wird.

1) Er öffnet den Kalendar und wählt da einen Tag aus. -> Funktioniert ist jedoch bei einem Geburtstag etwas umständlich die ganzen Jahre durchzuswipen.

2)Er gibt das Datum händisch ein und drückt Enter. -> Funktioniert auch. Jedoch muss man nur bei diesem Feld Enter drücken. Bei allen anderen nicht.

3)Er gibt die Daten händisch ein und drückt nicht Enter, sondern klickt einfach woanders hin. -> Funktioniert nicht. Die Daten werden nicht in die Variable geschrieben, die für die Validierung bedacht ist. Durch die Validierung wirkt es sehr konfus für den Kunden, da er glaubt er habe das Feld befüllt, dennoch meckert er dann rum.

Lösungsansätze: Events wie onclose von flatpickr funktionieren nicht. Habe es auf allen Wegen probiert. Man kann nict auf den Wert des Feldes zugreifen, wenn zuvor nicht Enter gedrückt wurde.

Idee, aber keinen Plan wie das funktioniert/ob es überhaupt funktioniert:

Wenn man die Daten eingibt, dann soll Javascript auf diesem Feld, nachdem der Focus weg ist, automatisch ein Enter ausführen.(Sollte irgendwie machbar sein, hoffe ich zumindest. Weiß nur nicht wie, da ich JS/VUE usw. alles in den letzetn zwei Monaten crashkursartig gelernt habe, um das Projekt zu basteln.)

Oder du hast eine andere Idee, Demo ist ja online.

Ich hätte gerne das der Kunde das Datum eingeben kann, denn wenn jemand 1979 geboren ist muss er erst mal 40x swipen. Ist lästig. Man kann im Kalender, die Jahreszahl auch manuell ändern, aber ob man das als Kunde sieht, bezweifle ich.

Dazu soll dieser Kalender dennoch da sein. Sieht einfach professioneller aus und wertert mein Projekt auf :D

0
perhp  03.07.2019, 07:24
@werdas34

Probier mal mit v-input oder change eine Methode aufzurufen und schau ob dort der Zeitpunkt richtig ist.

0
werdas34 
Fragesteller
 03.07.2019, 13:19
@perhp

Wenn du meinst in dieser Methode, dann das Event von flatpickr zu triggern funktioniert ledier nicht. dateStr hat leider nur den letzten Wert der mit Enter bestätigt wurde oder null. Oder gibt es eine andere Möglichkeit den Wert vom Input abzufragen? Musste ihn dann nur in die Variable birthdaze schreiben,damit die Validierung klappt.

0