perlunity.de - PERL | JAVASCRIPT | PHP | MySQL | APACHE



#!/COMMUNITY

Members: 5374
davon online: 1
weitere User: 34
Click for quality!




11.02.2012 / 17:05

Community-Member werden   |   Paßwort vergessen   |   OnlineMonitor (1) Wer ist online ... OnlineMonitor starten !
     

 

Home


PERLscripts


PHPscripts


JAVAscripts


Hilfreiches


Links2www


Newscenter


Community


Interna




Community  »  Javascript - Clientprogrammierung zur Themenübersicht Themensuche Themenansicht in Thread-Modus


BeitragFormular zusammen rechnen *verzweifel*
Seitenanfang
Ich bin ja ein lösungssucher hab jetzt die letzten 2 tage im www gesucht aber nun kann ich nicht mehr alles was ich gefunden habe, hab ich nicht verstanden...

parseInt + parseflot + string um und zurückwandeln, komma in punkt um und zurück wandeln, ist zu viel für mich und meinem erbsen grossem gehirn.

<script type="text/javascript">
function berechnung(){
var npreis = "12,30" ; //wert wird aus einer datenbank eingefügt. Normalerweise ist dort ein platzhalter.
var anzahl = document.muster.anzahl.value;
var art = document.muster.versandart.value;
ergebnis = npreis * anzahl + art;
document.muster.gesamtbetrag.value = ergebnis ;
}
</script>

so sollte es eigentlich verständlich sein was ich möchte, mag einer der ein grösseres hirn als ich hab mir mal helfen.

bitte bitte .... biiitttteee

gruss atilla

Datum: 08.02.2005-14:31

Beitragre: Formular zusammen rechnen *verzweifel*
Seitenanfang
Hallo Atilla,

eigentlich ist es besser, Dezimalzahlen-Werte aus der Datenbank gleich mit Punkt anstelle eines Kommas einzutragen, ansonsten Komma austauschen z.B. so, weil's in jedem Browser funktioniert:


var i = npreis.indexOf(",");
if (i >= 0) {
npreis = npreis.substring(0,i)+'.'+npreis.substr(i+1,99);
}

Wenn Du mit Texten rechnen willst, mußt Du das Javascript mitteilen, deshalb schreibe:

var ergebnis = eval(npreis)*eval(anzahl)+eval(art);

Besser wäre allerdings eine gründliche Prüfung der Formularfelder, wobei anstelle von eval() dann parseFloat() zum Einsatz kommt z.B.:

if (isNaN(anzahl) == true) { // ist keine Zahl
anzahl = 1; // Anzahl einfach auf 1 setzen
document.muster.anzahl.value = 1;
// oder Fehler melden
// alert('Anzahl falsch!');
// und Cursor in das Formularfeld setzen
// document.muster.anzahl.focus();
} else { // Text in Float umwandeln
anzahl = parseFloat(anzahl);
}

Danach kannst Du die Variable anzahl direkt zum Multiplizieren verwenden, also ohne eval().

Datum: 08.02.2005-21:35

Beitragre: Formular zusammen rechnen *verzweifel*
Seitenanfang
Hier kommt Dein fertiges Script. Du wirst aber nicht umhin kommen, Dich mit der Problematik etwas mehr zu beschäftigen. Wer nimmt mir denn meine Arbeit ab?

<script type="text/javascript">
var ok = true; // hier Fehlerstatus merken
// wenn ok = false, Berechnung abbrechen
function berechnung() {
  var npreis = "12,30" ; // Wert wird aus einer Datenbank eingefuegt.
  var anzahl = document.muster.anzahl.value;
  var art = document.muster.versandart.value;
  npreis = text2float(npreis,false);
  anzahl = text2float(anzahl,document.muster.anzahl);
  art = text2float(art,document.muster.versandart);
  if (ok == true) { // Berechnung nur durchfuehren, wenn alle drei
    // Texte erfolgreich in Float (Zahlen) umgewandelt werden konnten
    var ergebnis = npreis*anzahl+art;
    document.muster.gesamtbetrag.value = ergebnis;
  }
}
function text2float(txt,feld) { // Text in Zahl umwandeln
  // der erste Parameter enthaelt den Text mit der Zahl
  // der zweite Parameter enthaelt das Objekt fuer den
  // Ruecksprung nach einer entsprechenden Fehlermeldung
  var i = txt.indexOf(","); // Position vom Komma bestimmen
  // Komma durch Punkt ersetzen, wenn ein Komma vorhanden war
  if (i >= 0) txt = txt.substring(0,i)+'.'+txt.substr(i+1,99);
  if (isNaN(txt) == true) { // der Text ist keine Zahl
    if (feld) { // Fehler bezieht sich auf ein Formularfeld
      alert('Bitte geben Sie hier eine gültige Zahl ein!');
      feld.focus(); // Cursor in dieses Formularfeld setzen
      ok = false; //  Berechnung in berechnung() abbrechen
      txt = 1; // sicher ist sicher, Wert wird nicht verwendet
    } else { // Fehler kommt aus der Datenbank
      txt = 1; // Wert z.B. einfach auf 1 setzen
      // hier sollte das Programm eigentlich nie vorbeikommen
    } // end else if
  } else { // Text ist eine gueltige Zahl
    txt = parseFloat(txt); // Text in Float umwandeln
  } // end else if
  return txt; // gibt immer einen Float-Wert zurueck
} // end function text2float
</script>

Datum: 09.02.2005-08:40

Beitragre: Formular zusammen rechnen *verzweifel*
Seitenanfang
wenn ich was fertiges habe kann ich es ausseinander nehmen (meistens) und alles was ich auseinander nehme kann ich auch wieder zusammen bauen und verstehen, dauert manchmal ein wenig aber dafür sind die ahhhhh's um soviel schöner vielen dank !!

Datum: 09.02.2005-11:44

Beitragre: Formular zusammen rechnen *verzweifel*
Seitenanfang
Hallo

mall ein kleinen Anschub in deine Sache

Routine "." in ","

aufgerufen wird so was in

- PreisText(npreis)
oder Prüfung ( Anzeige )

- alert (PreisText(npreis));

MFG

Tron

function PreisText(wert)
{
var text = wert + "";
var punkt = text.indexOf(".");
if (punkt < 0) text += ".00";
else if(punkt == 0) text = "0" + text;
text += "00";
punkt = text.indexOf(".");
text = text.substring(0,punkt + 3);
return text;
}

Datum: 08.02.2005-21:41

Beitragre: Formular zusammen rechnen *verzweifel*
Seitenanfang
Danke! doch jetzt bin ich noch mehr verwirrt...

Mag mir einer die beiden post und meins zu einem komplett ding zusammen fügen. bei mir kommt nur mist raus.

<mitdermausständiggegenmeinenkopfhau>

Datum: 08.02.2005-22:41

Beitragre: Formular zusammen rechnen *verzweifel*
Seitenanfang
hallo atilla,


<html><head>
<script language="JavaScript" type="text/javascript">
function berechnung(){
var npreis = "12,30";
npreis=npreis.replace(",",".");
var anzahl = document.muster.anzahl.value;
var art = parseFloat(document.muster.versandart.value);
var ergebnis = npreis * anzahl + art;
ergebnis = ergebnis.toFixed(2);
ergebnis=ergebnis.replace(".",",");
document.muster.gesamtbetrag.value = ergebnis ;
}
</script>
</head>
<body>
<form name="muster" id="muster">
Anzahl : <input name="anzahl" type="text" id="anzahl" size="5"><br>
Versand: <select name="versandart" id="versandart3">
<option value="0.55">Brief</option>
<option value="1.44">Großbrief</option>
</select><br> <br>
<input name="berechnen" type="button" id="berechnen"
value="Berechnen" onClick="berechnung()">
<br><br>Summe:<input name="gesamtbetrag" type="text" id="gesamtbetrag">
</form>
</body></html>

gruß
stef

Datum: 09.02.2005-09:08

Beitragre: Formular zusammen rechnen *verzweifel*
Seitenanfang
Also ich muss mich jetzt mal ehrlich bei euch bedanken funktioniert super und nun scheine ich das auch zu verstehen.. glaub ich zumindest danke schön an euch drei !!

gruss atilla

Datum: 09.02.2005-11:30

-






-
-