Javascript Live-Berechnung

  • Hallo, ich habe ein Problem mit meinem Formular. Es wird ein Preis aus einer Auswahl von Radiobuttons errechnet mit diesem Skript:


    In das Rabattfeld soll der User einen Rabatt eintragen und dann soll der endgültige Preis darunter "live" errechnet werden.
    Soweit funktioniert auch alles, nur wenn dann nachträglich eine Konfiguration der Radio-buttons geändert wird, ändert sich das Feld mit der ID "total" jedoch nicht ID "ausgabe".

    Diese ändert sich erst, wenn man im Rabattfeld "Enter" drückt.
    Wie muss ich den Code ändern, damit dies ohne diesen Umweg geschieht und "live" berechnet wird?

    Danke im voraus!

    • Anzeige

    Hallo!

    Wenn du gerade an deiner Website arbeitest oder dein aktuelles Hosting überdenkst: Wir betreiben mit NetzLiving eine Hosting-Plattform, die speziell auf Performance, Sicherheit und einfache Verwaltung ausgelegt ist.

    • ✔️ Schnelle Ladezeiten (optimiert für WordPress & Co.)
    • ✔️ Deutsche Server & DSGVO-konform
    • ✔️ Persönlicher Support (kein 0815-Ticket-System)

    Mehr erfahren

  • Du kannst bespielsweise den Event onchange="rechnen()" verwenden:

    Code
    <input type="radio" name="Konsolen" id="Schwenk" data-price="940" [COLOR=#ff0000]onchange="rechnen()"[/COLOR]>
    <input type="radio" name="Konsolen" id="Schwenk2" data-price="1000" [COLOR=#ff0000]onchange="rechnen()"[/COLOR]>
  • Bei onchange "hängt" das Feld hinterher.. Also jedes mal, wenn ich eine andere Konfiguration mit den Radiobuttons mache, kommt die Summe erst einen Schritt später.

  • Hast Du noch andere Skripte auf der Seite laufen?

    Und: Ohne URL ist es ziemlich schwierig, ein Skript zu debuggen... ;-)


  • Soweit funktioniert auch alles, nur wenn dann nachträglich eine Konfiguration der Radio-buttons geändert wird, ändert sich das Feld mit der ID "total" jedoch nicht ID "ausgabe".


    Bei jQuery blicke ich schlechter durch als bei soliden JavaScript. Somit kann ich mich irren, doch einfach mal die Frage, was für Radio-Buttons?
    Ich sehe nur einen und da wird nur geprüft, ob ausgewählt oder nicht und was soll sich da noch ändern, wenn beim ersten Mal checked true und beim zweiten Mal checked true?

  • So wie Edi schrieb wird das in etwa richtig sein, Du musst das Event verarbeiten, wenn Dir checked auf true oder false nichts bringt, eventuell mit

    onchange="rechnen(event,this)";

    oder

    onchange="rechnen(this.value)

    um an die Daten zu kommen. Weiß jetzt selbst gerade nicht, wie es richtigt geschrieben wird, denke das letzte war richtig, hatte aber die erste Schreibweise auch schon benutzt.


    [COLOR=#ff0000]
    [/COLOR]

  • So, damit hättest Du erst einmal immer einen aktuellen Wert von den Radio-Buttons in der globalen var konsole oder wie immer Du die bezeichnen magst und mit diesen Wert kannst Du dann weitere Berechnungen durchführen:

    Besser ist es aber, man bindet sich ein 100kB schweres jQuery-Framework für jeden Hasenpup ein, welches man dann nicht versteht.

    Einmal editiert, zuletzt von Melewo (24. Mai 2014 um 22:20)

  • Wenn Du die Eventhandler aus den Input-Elementen heraushaben möchtest, dann geht das mit addEventListener.

    Nur die Unterschiede bei den Browsern finde ich jetzt noch etwas merkwürdig. Der FF übernimmt alle Veränderungen, IE und Chrome reagieren bei einer Erhöhung von rabatt erst nach einer Bestätigung, bei einer Verringerung des Wertes jedoch sofort. Da wären noch weitere Tests erforderlich, ob nun onkeyup ideal ist oder ob da vorher noch ein Focus auf das Element gelegt werden sollte.

    Das sollte mit jQuery etwas kürzer werden, doch verständlicher ist es halt so für mich. Nun sollte es eigentlich ausreichend sein für einen Anfang.

  • Vielen Dank für die Mühe, jedoch löst dies mein Problem nicht.


    Hat jemand einen Lösungsvorschlag für die Rabattberechnung, welche "live" durchgeführt werden soll?

  • Habe es jetzt nur mit Jquery gelöst. Nur das Ausgabefeld akutalisiert sich nicht instant, wenn der Rabatt geändert wird. Wie löse ich dies?

  • Hätte ich so nicht mit jQuery in kurzer Zeit hinbekommen und alles verstehe ich beim ersten überfliegen auch nicht, weil ich mich zu wenig mit jQuery beschäftige. Werde es mir noch einmal in Ruhe anschauen.

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!