In einem Input-Feld wird der neue Wert angezeigt, aber der alte nicht überschrieben

  • Hallo sehr geehrte Mitglieder des Forums,
    ich habe folgendes Problem.
    Aus einer Exceltabelle lese ich per VBA DATEN aus und scheibe diese in die Inputfelder eines HTML-Formulars.
    Die Inputfelder spreche ich via

    Code
    Document.getElementsByTagName("input")(5).innerText = "irgendwas"

    bzw.

    Code
    Document.getElementsByTagName("input")(5).value = "irgendwas"

    an.
    Das funktioniert auch, also ich sehe dort was automatisiert eingeschrieben wurde, aber im Hintergrund halten die Inputfelder noch die alten Werte.
    Also die alten Werte werden nicht wirklich mit den neuen Werten überschrieben.
    Habe Goggle durchsucht, auch schon 15 Seiten mit Themen in Eurem Forum.
    Mir fällt nix ein wie ich das Problem lösen kann.
    Vielleicht könnt Ihr mir helfen.

    Danke im Voraus
    Pit

    • Offizieller Beitrag

    Hallo,

    Wo genau siehst Du die doppelten Werte?
    Im Feld selber kann ich mir das nicht vorstellen, weil Du mit = einen Wert neu setzt.
    Im Value im Quelltext des Browsers kann ich mir das schon denken, aber dort siehst Du auch nicht die Veränderungen, die mit JS durchgeführt werden.
    Wenn ich das richtig vermute, solltest Du mal F12 im Browser Deiner Wahl drücken, dann öffnen sich die Entwicklertools. Dort ist dann auch das manipulierte DOM zu sehen.

    Gruß Arne

  • Zitat von Arne Drews


    Wenn ich das richtig vermute, solltest Du mal F12 im Browser Deiner Wahl drücken, dann öffnen sich die Entwicklertools.


    Nicht im Opera...

    Gegen Mods kommt man nicht an, die haben immer Recht. Sind scheinbar nicht kritikfähig.

    • Offizieller Beitrag

    Ach guck an... Ja, den nutze ich fast nur ein bis zweimal im Jahr, wenn das zur Anforderung gehört... ;)
    Hat der denn gar keine Entwicklertools oder über ne andere Taste?

    Edit: Ah ja... Grad gelesen. Nennt sich Dragonfly. Öffnen mit STRG + UMSCH + I, warum einfach wenns auch kompliziert geht...
    :)

  • Hallo Arne,
    hab ich schon alles getan. Habe mit dem IE, (ja leider IE muss ihn leider beruflich nutzen) auch die Entwicklertools benutzt und zur Kontrolle auch den FF. Dort standen noch die alten Werte der Inputfelder, obwohl der Browser die neuen anzeigte.
    Ich kann es nur so erklären, das der Browser die neuen Werte nicht schnell genug verarbeitet und somit die neuen Werte zwar gezeigt, im Hintergrund aber die alten noch gehalten werden. Obwohl auch das habe ich schon mit

    Code
    Application.Wait Now + TimeSerial(0, 0, 1)

    bedacht und es hat nichts gebracht.
    Ich verstehe nicht dass die neuen Werte in den Feldern sichtbar sind, die alten aber gespeichert werden.

    Gruss Pit

  • Hallo Arne,
    beruflich tragen wir Daten einer riesigen Excelliste von Hand in ein Programm von IBM mit dem Namen MAXIMO.
    Du wirst mir zustimmen das man sich irgendwann überlegt wie man das automatisieren kann. Der Ablauf ist von Mausgeklicke,
    STRG-C bist STRG-V bestimmt. Also habe ich es mit AutoHotkey versucht, was zum Teil funktionierte, aber eben nicht stabil. Da die Werte mal übernommen wurden, mal wieder nicht. Siehe Oben. Ich dachte das es an AutoHotkey läge, so habe ich es direkt aus Excel mit VBA versucht. Auch da funktioniert es mal so, mal so. Ich kann es mir nur so erklären, dass es an MAXIMO liegt, da es eine Webanwendung ist, die stark mit Event-Listener belastet ist die auf ID's abzielt. Deshalb benutzte ich ja auch die TAG-Names.

    Gruss Pit

  • Also MAXIMO arbeitet mit einem Framework Namens DOJO. Ich vermute das es dadurch zu Störungen kommt.
    Ich begründe das damit, das ich mir mit den Tools (F12) alle infrage kommenden Attribute der Input-Tags rausgeschrieben und diese mit DOM verändert habe.

    Code
    objShellWindow.Document.getElementsByTagName("input")(5).Select
                    objShellWindow.Document.getElementsByTagName("input")(5).Value = ""
                    objShellWindow.Document.getElementsByTagName("input")(5).Value = "Irgendwas"
                    objShellWindow.Document.getElementsByTagName("input")(5).Title = "Irgendwas"
                    objShellWindow.Document.getElementsByTagName("input")(5).originalvalue = "Irgendwas"
                    objShellWindow.Document.getElementsByTagName("input")(5).prekeyvalue = "Irgendwas"
                    Application.Wait Now + TimeSerial(0, 0, 1)


    Es funktioniert eben nicht, oder nicht stabil. Daher lege ich das Thema erstmal auf Eis bis ich neue Erkenntnisse habe.

    Danke an Alle
    Pit

    • Offizieller Beitrag
    Zitat

    Also MAXIMO arbeitet mit einem Framework Namens DOJO. Ich vermute das es dadurch zu Störungen kommt.

    Nö, das Phänomen scheint natürlich zu sein, bei mir hat es ja im Test mit reinem HTML/JavaScript auch nicht geklappt. Dojo kann nichts dafür.
    Mit Schnittstelle meinte ich allerdings eine Art API, die MAXIMO lt. IBM besitzt. Darüber kann man Daten abfragen/senden.
    Das solltest Du Dir genauer ansehen. Das wäre auch deutlich effizienter, als so'n Javascript-Gefummel...

  • Ich kann/darf keine API benutzen, weil mir die Rechte fehlen. Ich werde sie auch nicht bekommen, also kann ich nur über so ein gefrickel die Daten ins Maximo reinschieben.

    Einmal editiert, zuletzt von linuxpit (23. August 2016 um 14:24)

  • Hallo,
    vielleicht liegt es auch am Datenformat. Was ich meine sind unsichtbare Steuerzeichen oder das Zeichenformat stimmtr nicht überein?
    Das sind Überlegungen die ich in Kürze ausprobieren werde.

  • Hallo, habe das Problem zu Hause nachgebaut
    und bin zu der Erkenntnis gelangt, dass es an den Event-Listner liegen muss.
    Werde diese Spur verfolgen und weiter informieren.

    Gruss Pit

    • Offizieller Beitrag

    Ich habe zwar bis jetzt keinen EL bei Dir gesehen, aber den würde ich auch ausschließen...
    Mach doch einfach mal ne Trockenübung mit einer minimalistischen Datei. Reines HTML, ein <input>-Tag und dann ein JS-Einzeiler mit dem Du den Value änderst.
    Dann wirst Du feststellen, dass der Value im DOM nicht sichtbar aktualisiert wird, das ist scheinbar ein ganz gewöhnliches Verhalten.

  • Hallo Arne,
    habe gestern eine Trockenübung:-D gemacht und es mit FF-> Firebug LIVE untersucht. Es lag am EL.
    Werde nachher meinen Code des Versuchs mit Beschreibung und Verhaltensreaktionen des EL hier einstellen.

    Gruss Peter

  • Hallo nochmal,
    so hier erstmal der Code

    Und hier das passende Bild dazu:


    So ich hoffe man kann erkennen, das der Wert "Wert1" noch gehalten wird, obwohl dieser geändert wurde und "Wert2" auch schon geändert wurde. Wenn jetzt die Maus bewegt wird werden die Daten übernommen.
    Das ist auch zusehen auf dem unter Bereich von FireBug.

    Pit

  • Bestimmt. Mein Problem ist, wenn du dir den Screenshot ansiehst, das genau in dem Moment die Daten übernommen werden wenn die Inputfelder so stehen wie sie abgebildet sind. Und das
    das liegt an einem EL. Aber ich habe schon einen Lösungsansatz.
    :smilie162: