PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : felder per js direkt berechnen und anzeigen


Stifler
28.01.2005, 15:52:25
hi,

habe folgendes vor nur hackt es grad an der umsetzung.

folgendes:
ich habe 3 eingabefelder

Anzahl|Preis|Gesamtpreis

Gesamtpreis ist ein readonly feld. ich möchte nun das wenn jemand in Anzahl und in Preis einen wert eingibt der Gesamtpreis erscheint.

ich weis das man sowas mit js realisieren kann, die frage ist nur wie?

kann mir jemand eine gute seite nennen wo sowas erklärt wird bzw wo man sich mal den quellcode anschauen kann?

merci schon mal

Stifler
28.01.2005, 16:07:55
hab es nun mal so probiert aber irgendwie tut sich da überhaupt nix :(


<script language="JavaScript">
// Berechnungsfunktion
function rechne(feld)
{
with(feld.form)
{
var wert1 = parseFloat(anz1.value)
var wert2 = parseFloat(pr1.value)

// Werte in Feld1 und Feld2 numerisch?
if(isNaN(wert1) || isNaN(wert2))
return

// Ergebnis berechnen, wenn beide Felder gefuellt sind
gp1.value = (anz1.value == "" ||
pr1.value == "") ?
"" :
wert1 + wert2
}
}
</SCRIPT>

<TD>
<P><INPUT ID="Eingabefeld14" TYPE=TEXT NAME="anz1" VALUE="" onChange="numerisch(this); rechne(this)"></P>
</TD>
<TD>
<P><INPUT ID="Eingabefeld21" TYPE=TEXT NAME="pr1" VALUE="" onChange="numerisch(this); rechne(this)"></P>
</TD>
<TD>
<P><INPUT ID="Eingabefeld32" TYPE=TEXT NAME="gp1" VALUE="" readonly></P>
</TD>

xabbuh
28.01.2005, 17:28:14
Benutze statt onChange bei Texteingabefeldern onKeyDown.

Stifler
28.01.2005, 19:03:16
habe es geändert aber da tut sich immer noch nix. das script hab ich auf ner lern seite im web gefunden ich schätze mal es liegt an diesem teil hier

with(feld.form)

kann mir das bitte jemand erklären für was dieser teil steht?

Stifler
01.02.2005, 13:13:06
so hab es jetzt soweit hinbekommen das es funktioniert. mein problem ist nur das in feld2 preise eingegeben werden sollen.

wie ersetzt man in js ein komma mit einem punkt? und für die ausgabe brauch ich ja wieder das komma. mit php ist es einfach aber mit js hab ich echt keinen plan.

so sieht das bis jetzt funktionierende script aus


<HTML>
<HEAD>
<SCRIPT LANGUAGE="JavaScript">

function berechnen(x,y)
{
var summe= parseFloat(x.value) + parseFloat(y.value);
document.zahlenkombination.Ausgabe2.value= summe;
}
</SCRIPT>
</HEAD>
<BODY>
<FORM NAME="zahlenkombination">
Geben Sie die erste Zahl ein:
<INPUT TYPE="text" NAME="feld1" value="0" onKeyup="berechnen(feld1,feld2)"><P>
Geben Sie die zweite Zahl ein:
<INPUT TYPE="text" NAME="feld2" value="0" onKeyup="berechnen(feld1,feld2)"><P>
<INPUT TYPE="text" NAME="Ausgabe2" value="0" SIZE="20">
</FORM>
</BODY>
</HTML>


hoffe da kann mir jemand helfen. merci

c4
01.02.2005, 13:18:17
--> http://www.selfhtml.net/javascript/objekte/string.htm#replace

Stifler
01.02.2005, 13:30:19
ok hab es hinbekommen, nur noch ein klitzekleines problem. gibt der user in das feld2 den wert 2,50 oder 2,00 ein wird es ja von js ignoriert. wie kann ich das lösen das er mir ne null ebenfalls ausgibt?

c4
01.02.2005, 13:33:34
Wieso sollte das Feld ignoriert werden?

Willst Du nach der Addition der beiden Zahlen, dass bei 1.2+1.8 nicht 3, sondern 3.00 steht oder wie?

Stifler
01.02.2005, 13:36:52
nein ich meinte nicht das feld wird ignoriert, sonder am ende stehende nullen.

Willst Du nach der Addition der beiden Zahlen, dass bei 1.2+1.8 nicht 3, sondern 3.00 steht oder wie?

genau das meine ich :)

meine funktion schaut jetzt folgender massen aus


function berechnen(x,y)
{
y.value=y.value.replace(",",".");

var summe= parseFloat(x.value) + parseFloat(y.value);

y.value=y.value.replace(".",",");

document.zahlenkombination.Ausgabe2.value= summe;
document.zahlenkombination.Ausgabe2.value=document.zahlenkombination.A usgabe2.value.replace(".",",");
}

c4
01.02.2005, 13:58:30
a und b sind die Zahlen, c das Ergebnis, l die gewünschten Nachkommastellen und s die Dezimaltrennzeichen.
<script type='text/javascript'>
var a=1.2;
var b=1.8;
var c=String(a+b);
var l=2;
var s='.';

if (c.indexOf(s) == -1) {
c+=s;
}

for (i=c.length-1; i<=l; i++) {
c+='0';
}

alert('a= '+a+' b= '+b+' c= '+c+' l= '+l+' s= '+s);
</script> Bei mir ist JavaScript aber zu blöd 1.2 und 1.9 zu addieren - es kommt immer 3.09999999 raus...

Stifler
01.02.2005, 14:17:11
alles klar merci c4 hab es etwas umgebaut und es funktioniert einwandfrei :)

ich hab jetzt zwar multiplikation da taucht der fehler net auf, aber wenn ich addition mache bringt er mir den gleichen fehler. nun macht ja insofern nix da ich ja adition brauche und da funtkioniert es *g

hier der code falls noch jemand so etwas sucht


<HTML>
<HEAD>
<SCRIPT LANGUAGE="JavaScript">

function berechnen(x,y)
{
y.value=y.value.replace(",",".");

var summe= parseInt(x.value) * parseFloat(y.value);

y.value=y.value.replace(".",",");
document.zahlenkombination.Ausgabe2.value= summe;
document.zahlenkombination.Ausgabe2.value=document.zahlenkombination.A usgabe2.value.replace(".",",");

var s=',';
var l=2;

if (document.zahlenkombination.Ausgabe2.value.indexOf(s) == -1) {
document.zahlenkombination.Ausgabe2.value+=s;
}

for (i=document.zahlenkombination.Ausgabe2.value.length-1; i<=l; i++) {
document.zahlenkombination.Ausgabe2.value+='0';
}
}
//für nachkomma stellen parseFloat benutzen
</SCRIPT>
</HEAD>
<BODY>
<FORM NAME="zahlenkombination">
Geben Sie die erste Zahl ein:
<INPUT TYPE="text" NAME="feld1" value="0" onKeyup="berechnen(feld1,feld2)"><P>
Geben Sie die zweite Zahl ein:
<INPUT TYPE="text" NAME="feld2" value="0" onKeyup="berechnen(feld1,feld2)"><P>
<INPUT TYPE="text" NAME="Ausgabe2" value="0" SIZE="20">
</FORM>
</BODY>
</HTML>


danke nochmal

c4
01.02.2005, 14:19:00
Original geschrieben von Stifler
ich hab jetzt zwar multiplikation da taucht der fehler net auf, aber wenn ich addition mache bringt er mir den gleichen fehler. nun macht ja insofern nix da ich ja adition brauche und da funtkioniert es Kennst Du dieses komische Gefühl, wenn die Finger etwas anderes Tippen als der Kopf wollte... ;)

Stifler
01.02.2005, 14:22:22
ups hehe kann vorkommen war ne lange nacht. ein fehler hab ich allerdings festgestellt. soland der wert x einstellig ist funktioniert es wunderbar mit den kommastellen. wird allerdings 10*2,5 genommen gibt er 25,0 anstatt 25,00 aus. das selbe passiert wenn der wert y mehrstellig wird

c4
01.02.2005, 14:28:02
War ja dumm was ich da produziert hatte. Der hat die Zählschleife anhand der Länge der Zahl durchlaufen lassen, dabei geht es doch um die Nachkommastellen. Wurde (hoffentlich) behoben: <script type='text/javascript'>
var a=10;
var b=2.5;
var c=String(a*b);
var l=2;
var s='.';

if (c.indexOf(s) == -1) {
c+=s;
}

var temp=c.split(s);
for (i=temp[1].length; i<l; i++) {
c+='0';
}

alert('a= '+a+' b= '+b+' c= '+c+' l= '+l+' s= '+s);
</script>

Stifler
01.02.2005, 14:31:57
*g wie war das eben doch gleich?

Kennst Du dieses komische Gefühl, wenn die Finger etwas anderes Tippen als der Kopf wollte... ;)

trotzdem nochmal danke ;)