Gelöst - Save event - accept text

10. Juli 2015 14:29

Hallo zusammen,

mein aktuelles Problem ist wirklich bitter... :roll:

Folgendes: Ich habe in meiner Entität ein JS eingebaut, welches in einem Feld die Zeit jedesmal um eine Minute hochzählt (mit einem Timer -setInterval).
Wenn jemand nun im Beschreibungsfeld etwas eingibt und währenddessen ungespeicherte Änderungen erfolgt sind (nämlich durch das Hochzählen der Minuten), dann greift das autoSave und mein Text, den ich in das Beschreibungsfeld geschrieben hatte, geht mir verloren und auch mein Fokus auf das Feld.

Nun habe ich gedacht, OK. Du schaltest den Autosave für dieses Formular aus mithilfe eines JS aus (steht auch im SDK als function preventAutoSave). Diese Funktion bricht aber nur das Save Ereignis ab, NACHDEM es bereits loslief und stoppt die Ausführung des Ereignisses. Hierbei verliere ich trotzdem meinen Fokus und den Text den ich in das Beschreibungsfeld geschrieben hatte.

Auch mit getisDirty habe ich mein Glück versucht, da ich aber nicht aus dem Beschreibungsfeld rausgehe, während das Save Ereignis losläuft, erkennt das JS nicht, dass das Feld dirty ist.

Nun habe ich mir überlegt, ob ich nicht in das AutoSave Ereignis rein gretschen kann und hierbei zum Einen das Element ermittle, das den Fokus hat. Zusätzlich brauche ich über Control den Text im Beschreibungsfeld, der zwar auf der Oberfläche getippt wurde, aber noch nicht im Attribut gespeichert wurde. Dann würde ich diese beiden Dinge einfach in das preventAutoSave, sprich Focus an der richtigen Stelle setzen und den Text in das Beschreibungsfeld schreiben und hätte das Problem gelöst.
ABER: Wie kriege ich denn den Text im Beschreibungsfeld ermittelt, welcher noch nicht im Attribute geschrieben wurde sondern nur auf der Oberfläche???

Vielen Dank für Eure Hilfe!
Zuletzt geändert von MissCRM am 14. Juli 2015 19:12, insgesamt 1-mal geändert.

Re: Sehr Tricky - Save event - accept text

13. Juli 2015 11:01

Hallo,

auf den Text kannst du über das DOM-Objektmodell zugreifen, das ist allerdings völlig unsupportet und wird wahrscheinlich nicht in allen Browsern funktionieren.

An deiner Stelle würde ich mir überlegen, ob ihr für dieses Formular das AutoSave nicht einfach ausschaltet, bevor du da mit unsupporteten Mitteln das CRM verbiegst.

Re: Sehr Tricky - Save event - accept text

13. Juli 2015 14:52

Hallo Michael!

Vielen Dank für die Antwort. Leider löst das Ausschalten des Autosave´s auf Formularebene nicht mein Problem, da das Autosave trotzdem losläuft und mittendrin durch die Funktion prevent Autosave ausgeschaltet wird. Das heißt, es wird zwar nicht gespeichert, aber der Fokus verschwindet trotzdem aus dem Feld und der Text der getippt wurde auch...

Ich müsste wohl das Autosave auf Organisationsebene ausschalten, dies ist aber nicht gewünscht :(

function preventAutoSave(econtext) {
var eventArgs = econtext.getEventArgs();
if (eventArgs.getSaveMode() == 70 || eventArgs.getSaveMode() == 2) {
eventArgs.preventDefault();
}
}

Liebe Grüße

Re: Sehr Tricky - Save event - accept text

13. Juli 2015 18:27

Hallo,
das kann ich so nicht bestätigen.
Wenn für ein Formular das AutoSave ausgeschaltet ist, verliert das gerade aktive Feld nach 30 Sekunden nicht den Fokus sondern der Anwender kann ganz normal weiterschreiben.
Kann es sein, das dein JavaScript ein Save ausführt, um seine Änderungen im Formular zu speichern?

Re: Sehr Tricky - Save event - accept text

14. Juli 2015 13:45

Hallo,

leider auch nicht :( Ich vermute, dass es am Timer liegt. Danke für die Antwort.