Flashhilfe.de - Flash Community

HTML Formular Rechenfunktion

 


AntwortenRegistrieren Seite1  

pat_and_nobody#1
Benutzerbild von pat_and_nobody
Beiträge: 478
Registriert: Aug 2007

13.09.2010, 18:21

Also, ich habe ein HTML Formular in dem ich 15 Zeilen habe mit Feldern. Ich möchte das er mir das Feld Menge / VE * Einzelpreis multipliziert den Rabatt den ich im Feld Rabatt eingebe (in %) abzieht und im Feld Gesamt das Ergebnis ausgibt. Dann sollten alle Gesamt-Felder addiert werden und im Feld Zwischensumme addiert werden, dann noch +20% MwSt im Feld Mwst dazugezählt werden im um Feld Gesamtbetrag der Gesamtbetrag ausgegeben werden. Das alles mit JS

Das ganze sollte aber nicht auf Klick geschehen sonder während der Eingabe.
Kann mir da jemand helfen? Hab mein .zip angehängt, ist eine einfach HTML Datei mit CSS formatiert.

Bin für eine Hilfe sehr dankbar!

Angehängte Dateien:
Komprimierte Datei Archiv.zip3.64 KB
Schlagwörter: addieren, auftrag, Formular, rechnung
Sleepingbeast#2
Benutzerbild von Sleepingbeast
Beiträge: 579
Wohnort: Halle
Registriert: Apr 2005

14.09.2010, 09:05

Hallo,

in JavaScript gibts dafür das onchange-Event, was du einfach den Input-Feldern, bei deren "Veränderung" die Berechnungen ausgeführt werden sollen, zufügst. Also
PHP:
1
2
<input type="text" name="name_des_felds" onchange="berechne()" />

Die beim Auftreten des Events onchange aufgerufene Funktion berechne() ist dann relativ einfache Mathematik und ist von ihrer Syntax nahezu mit ActionScript identisch. onchange heißt übrigens nicht, dass jedesmal die Funktion aufgerufen wird, wenn du eine weitere Zahl im Textfeld eingibst, sondern wenn du den Inhalt des Textfelds änderst und dann zu einem anderen Textfeld wechselst.
Oder kommst du eben mit genau diesem JavaScript nicht weiter?


Patrick
_________________________________________________________
Um Rekursion wirklich zu verstehen, muss man zuerst Rekursion verstehen.
null != 'null' != 0 != '0'
Geändert von Sleepingbeast am 14.09.10 um 09:27 Uhr
pat_and_nobody#3
Benutzerbild von pat_and_nobody
Beiträge: 478
Registriert: Aug 2007

Themenautor/in

14.09.2010, 17:03

Hey, danke für deine Antwort!

Die onChange Funktion ist nicht das Problem. Eher das Rechnen.

In Flash ist es für mich kein Problem.

Dort mach ich z.B.

ActionScript:
1
2
gesamt1= wert01*wert02;
gesamt2 = wert03*wert04;


und z.B. mit interval oder onChange oder onEnterFrame die ständige Berechnung...

Bei JS kenn ich mich nicht so aus...
Sleepingbeast#4
Benutzerbild von Sleepingbeast
Beiträge: 579
Wohnort: Halle
Registriert: Apr 2005

15.09.2010, 12:11

Ich "erklär" mal kurz das Grundprinzip.
Wie ich gesehen habe, hast Du die name-Attribute deiner Input-Felder durchnummeriert (außer menge1, das solltest Du noch machen). Mit JavaScript kannst Du nun unter anderem über diese name-Attribute auf die Inhalte der einzelnen Input-Felder zugreifen.
In jedes der Input-Felder, deren Inhalte bei einer Änderung in die Berechnung mit einfließen sollen, schreibst Du onchange="berechne(X)". Das X steht für die Zahl der jeweiligen Zeile. Also für alle Input-Felder der ersten Zeile onchange="berechne(1)", die der zweiten Zeile onchange="berechne(2)" usw.
Beispiel:
ActionScript:
1<input name="menge1" type="text" class="input_3" id="textfield91" onchange="berechne(1)">

Somit wird bei jeder Änderung des Inhalts die Funktion berechne() mit der entsprechenden Zeilenzahl als Parameter übergeben.
Die Funktion selbst schreibst du dann entweder im head-Bereich deiner HTML-Datei oder besser noch in eine separate js-Datei.
Sie könnte dann ungefähr so aussehen:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
function berechne(NR) {
  var menge       = document.getElementsByName('menge' + NR)[0].value;
  var einzelpreis = document.getElementsByName('einzelpreis' + NR)[0].value;
  var rabatt      = document.getElementsByName('rabatt' + NR)[0].value / 100 * menge * einzelpreis;

  var betrag      = menge * einzelpreis - rabatt;

  document.getElementsByName('betrag' + NR)[0].value = betrag;

  var zwischensumme = '';
  var umsatzsteuer  = '';
  var gesamt        = '';

  for(var i = 1; i <= 15; i++ ) {
    zwischensumme += document.getElementsByName('betrag' + i)[0].value;
  }

  document.getElementsByName('zwischen')[0].value = zwischensumme;

  umsatzsteuer = zwischensumme * 0.2;
  document.getElementsByName('mwst')[0].value = umsatzsteuer;

  gesamt = parseFloat(zwischensumme) + parseFloat(umsatzsteuer);
  document.getElementsByName('gesamt')[0].value = gesamt;

}


Wichtig ist hierbei, dass Du (genau wie in ActionScript) Kommas als Punkte eingeben musst, damit der eingegebene Wert auch als Fließkommazahl erkannt wird. Schreibst Du ein Komma, geht JavaScript von einem String aus, mit dem er natürlich nicht rechnen kann. Da kannst Du Dir aber auch eine kleine "Komma zu Punkt"-Funktion schreiben, die ein Komma automatisch in einen Punkt umwandelt. Zusätzlich wären auch noch ein paar Verschönerungssachen denkbar, so dass eine Summe auch in einem Währungsformat ausgegeben wird (also statt 14 dann 14,00).

Ich hoffe, das bringt Dich schonmal ein bisschen weiter. Ansonsten meld Dich einfach nochmal.


Patrick
_________________________________________________________
Um Rekursion wirklich zu verstehen, muss man zuerst Rekursion verstehen.
null != 'null' != 0 != '0'
pat_and_nobody#5
Benutzerbild von pat_and_nobody
Beiträge: 478
Registriert: Aug 2007

Themenautor/in

15.09.2010, 15:05

Hey, danke. Das hat mir geholfen. Ich werds mir am Abend noch genauer anschauen, aber das sieht schon sehr hilfreich aus.

Vielen lieben Dank Patrick!
Sleepingbeast#6
Benutzerbild von Sleepingbeast
Beiträge: 579
Wohnort: Halle
Registriert: Apr 2005

15.09.2010, 15:32

Gern geschehen,

kann sein, dass sich der ein oder andere Fehler eingeschlichen hat. Werd eventuell auch noch n bissl dranrumbasteln, denn ich hatte vor ner Weile ein ähnliches Projekt, bei dem eine Rechnung genereirt werden sollte.


Patrick
_________________________________________________________
Um Rekursion wirklich zu verstehen, muss man zuerst Rekursion verstehen.
null != 'null' != 0 != '0'
pat_and_nobody#7
Benutzerbild von pat_and_nobody
Beiträge: 478
Registriert: Aug 2007

Themenautor/in

22.09.2010, 21:14

Hallo Patrick!

Dein Skript funktioniert super. Habe nur noch ein Problem. Bei der Addition (Zwischensumme) werden die Werte aneinander gereiht und nicht addiert...

Habe es mit parseInt() versucht, hat aber leider nichts gebracht. Irgendwo hab ich noch einen Wurm drin. Vielleicht magst du mir noch einmal helfen.

Bin sehr dankbar!
ActionScript:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
<script type="text/javascript">
function berechne(NR) {
    var menge       = document.getElementsByName('menge' + NR)[0].value;
    var einzelpreis = document.getElementsByName('einzelpreis' + NR)[0].value;
    var rabatt      = document.getElementsByName('rabatt' + NR)[0].value / 100 * menge * einzelpreis;
 
    var betrag      = menge * einzelpreis - rabatt;
 
    document.getElementsByName('betrag' + NR)[0].value = betrag;
 
    var zwischensumme = '';
    var umsatzsteuer  = '';
    var gesamt        = '';
 
    for(var i = 1; i <= 15; i++ ) {
      zwischensumme += document.getElementsByName('betrag' + i)[0].value;
    }
 
    document.getElementsByName('zwischen')[0].value = zwischensumme;
 
    umsatzsteuer = zwischensumme * 0.2;
    document.getElementsByName('mwst')[0].value = umsatzsteuer;
 
    gesamt = parseFloat(zwischensumme) + parseFloat(umsatzsteuer);
    document.getElementsByName('gesamt')[0].value = gesamt;
 
}
</script>
Kerstin77#8
Benutzerbild von Kerstin77
Beiträge: 1004
Registriert: Jul 2008

22.09.2010, 21:47

Hallo,

versuch es mal mit:
PHP:
1
2
3
4
for(var i = 1; i <= 15; i++ ) {
      zwischensumme += Number(document.getElementsByName('betrag' + i)[0].value);
    }


Grüße,
Kerstin
Wer Rechtschreibfehler findet, darf sie gerne behalten.
pat_and_nobody#9
Benutzerbild von pat_and_nobody
Beiträge: 478
Registriert: Aug 2007

Themenautor/in

22.09.2010, 22:48

Danke für deine Antwort aber leider funktioniert es so nicht

AntwortenRegistrieren Seite1  

Schnellantwort

Du musst registriert sein, um diese Funktion nutzen zu können.

 
Ähnliche Beiträge zum Thema
Partner Webseiten: art-and-law.de  Mediengestalter.info   phpwelt.de   Scubacube.de  
Haftungsausschluss   Datenschutzerklärung   Impressum
© 1999-2022 Sebastian Wichmann - Flashhilfe.de