Auswahllisten selektierung zwischenspeichern
Georg89
- javascript
Hallo alle zusammen,
Ich habe eine externe JavaScript Datei die zwei funktionen ausführen soll, zum einen ist dies eine Funktion zum überprüfen der Eingaben nach der richtigkeit im Formular (funktioniert auch ohne probleme). Und zum zweiten eine Funktion die den gesamt Preis ausrechnen soll, dort bin ich aber noch nicht weit...Mein Problem liegt nun darin den ausgewählten Wert aus einer Auswahlliste zu überprüfen und einer variablen zuzuordnen der den Preis für jede auswahl enthält.
Hier der Quellcode der nicht funktionierenden 2ten Funktion:
function berechnung () {
var chrom = 1454;
var silber_hochglanz = 1233;
var manhattan, agais, pergamon, silber_beschichtet, weiß = 1121;
var garn_mit = 208;
var garn_ohne = 0;
var seitenw_mit = 2267;
var seitenw_ohne = 0;
var art_mit = 240;
var art_ohne = 0;
var grip_mit = 98;
var grip_ohne = 0;
var fliesentrag_ohne = 0;
var fliesentrag_eck = 103;
var fliesentrag_nische = 51;
var preis = 2841;
if(window.document.formular.profilfarbe.value == "weiß") {
alert("Sie haben weiß gewählt!");
document.formular.profilfarbe.focus();
return false;
}
Wenn ihr benötigt stelle ich auch gerne den gesamten Quellcode der JavaScript Datei rein oder auch den des HTML Dokumentes.
Vielen Dank für eine Antwort von euch!
Hier der entsprechende Quellcode aus der HTML Datei der zum Formular passt.
<p><label for="profilfarbe"><strong>Profilfarbe:</strong></label>
<select class="" name="profilfarbe" id="profilfarbe">
<option value="weiß">Weiß</option>
<option value="pergamon" >Pergamon</option>
<option value="agais" >Ägäis</option>
<option value="manhatten" >Manhatten</option>
<option value="silber_hochglanz" >Silber hochglanz</option>
<option value="silber_beschichtet" >Silber beschichtet</option>
<option value="chrom" >Chrom</option>
</select>
</p>
Mahlzeit Georg89,
Hier der entsprechende Quellcode aus der HTML Datei der zum Formular passt.
Aha. Und wie und wo wird die Javascript-Funktion jetzt aufgerufen?
MfG,
EKKi
Aha. Und wie und wo wird die Javascript-Funktion jetzt aufgerufen?
MfG,
EKKi
Die Javascript Datei liegt in einer externen Datei... der Zugriff auf diese Datei wird im HTML Dokument so vollzogen:
<html>
<head>
<script type="text/javascript" src="berechnung160.js"></script>
</head>
<body>
Oder kann dies so nicht funktionieren, aber mit der Überprüfung des Formulars funktionierts ja auch so...
Sorry für das doppel post habe aber den ersten Kommentar zu spät gesehen.
Also um nochmal alles genauer zu beschreiben....
Ich habe eine HTML Datei und eine externe JavaScript Datei.
In der externen JavaScript Datei befinden sich zwei Funktionen, zum einen eine Funktion um die das Formular was sich in der HTML Datei befindet nach Fehleingaben zu überprüfen (diese funktion funktioniert ohne probleme)
Die zweite Funktion ist eine noch nicht vollständige Berechnung des Preises, dieser soll je nach selektierung eines Formularfeldes einen bestimmten Preis zwischen speichern und diesen dann am schluss insgesamt ausgeben. Es wird dennoch nix ausgegeben außer wie schon gesagt die Fehleingaben im Formular, dennoch kein Preis.
Hier der Quelltext der externen Javascript Datei mit der betreffenden Berechnungs Funktion:
function berechnung () {
var chrom = 1454;
var silber_hochglanz = 1233;
var manhattan, agais, pergamon, silber_beschichtet, weiß = 1121;
var garn_mit = 208;
var garn_ohne = 0;
var seitenw_mit = 2267;
var seitenw_ohne = 0;
var art_mit = 240;
var art_ohne = 0;
var grip_mit = 98;
var grip_ohne = 0;
var fliesentrag_ohne = 0;
var fliesentrag_eck = 103;
var fliesentrag_nische = 51;
var preis = 2841;
if(window.document.formular.profilfarbe.value == "weiß") {
alert("Sie haben weiß gewählt!");
document.formular.profilfarbe.focus();
return false;
}
}
Und hier der dazugehörige Quellcode in der HTML Datei d.h. das Formular:
<form id="formular" action="mailto:g.riebau@badexperte.de" method="post" enctype="text/plain" name="formular" onsubmit="return chkFormular(this,'i2008@ingo-webdesign.de',700,300)">
<input name="" class="none" value="" type="hidden"/>
<p><img src="twinline_zeichnung_links.jpg" alt="twinline_links"> Links</p>
<p><img src="twinline_zeichnung_rechts.jpg" alt="twinline_rechts"> Rechts</p>
<p><label for="ausfuerung"><strong>Ausführungen:</strong></label>
<select class="" name="ausfuerung" id="ausfuerung">
<option value="nix">Bitte wählen</option>
<option value="links" >Links</option>
<option value="rechts" >Rechts</option>
</select>
</p>
<h3>Maße und Zubehör</h3>
* Länge: 160 cm
<br>
* Breite: 70 cm (Duschausbuchtung: 90cm)
<br>
* Wannentiefe: 43 cm
<br>
* Kunststoffwanne in Weiß
<br>
* Duschtür mit 6 mm dickem Einscheiben-Sicherheitsglas
<br>
* Elektronische Steuerung für Ablauf und Türverriegelung
<br>
* Sitz- und Nackenstütze
<p><label for="profilfarbe"><strong>Profilfarbe:</strong></label>
<select class="" name="profilfarbe" id="profilfarbe">
<option value="weiß">Weiß</option>
<option value="pergamon" >Pergamon</option>
<option value="agais" >Ägäis</option>
<option value="manhatten" >Manhatten</option>
<option value="silber_hochglanz" >Silber hochglanz</option>
<option value="silber_beschichtet" >Silber beschichtet</option>
<option value="chrom" >Chrom</option>
</select>
</p>
Vielen Dank schonmal für weitere Antworten von euch!
Mahlzeit Georg89,
Also um nochmal alles genauer zu beschreiben....
Tut mir leid, aber das ist eben NICHT genau. Alles, was Du in diesem Posting beschrieben hast, war schon vorher klar. Was jedoch NICHT klar ist: wann wird die Funktion "berechnung()" überhaupt aufgerufen? Bzw. wann soll sie aufgerufen werden? Wann soll die Berechnung stattfinden?
Vielleicht solltest Du mal klar und deutlich und insbesondere ohne irgendwelchen Code zu zeigen beschreiben, was Du eigentlich willst ...
In der externen JavaScript Datei befinden sich zwei Funktionen, zum einen eine Funktion um die das Formular was sich in der HTML Datei befindet nach Fehleingaben zu überprüfen (diese funktion funktioniert ohne probleme)
Diese wird im "onsubmit"-Handler des Formulars ja auch aufgerufen.
Die zweite Funktion ist eine noch nicht vollständige Berechnung des Preises, dieser soll je nach selektierung eines Formularfeldes einen bestimmten Preis zwischen speichern und diesen dann am schluss insgesamt ausgeben. Es wird dennoch nix ausgegeben außer wie schon gesagt die Fehleingaben im Formular, dennoch kein Preis.
Natürlich wird nichts ausgegeben. Die Funktion wird ja auch nirgendwo aufgerufen. Vielleicht solltest Du Dich (nochmals) mit den <http://de.selfhtml.org/javascript/sprache/funktionen.htm@title=Grundlagen von Funktionen in Javascript> beschäftigen ...
MfG,
EKKi
Tut mir leid, aber das ist eben NICHT genau. Alles, was Du in diesem Posting beschrieben hast, war schon vorher klar. Was jedoch NICHT klar ist: wann wird die Funktion "berechnung()" überhaupt aufgerufen? Bzw. wann soll sie aufgerufen werden? Wann soll die Berechnung stattfinden?
Diese Funtkion soll direkt anschliessen nach der positiven Überprüfung chkFormular ausgeführt werden!
Diese wird im "onsubmit"-Handler des Formulars ja auch aufgerufen.
Wie mache ich das die Funktion berechnung() direkt anschliessen nach der Überprüfung des Formulars durchgeführt wird?Also nachdem ich schon auf den Submit Button geklickt habe und diese keine Fehler gefunden hat!
Natürlich wird nichts ausgegeben. Die Funktion wird ja auch nirgendwo aufgerufen. Vielleicht solltest Du Dich (nochmals) mit den <http://de.selfhtml.org/javascript/sprache/funktionen.htm@title=Grundlagen von Funktionen in Javascript> beschäftigen ...
Kann ich den zwei Funktionen mit einem Klick Ausführen lassen?
Ich hoffe du verstehst mich diesmal sonst muss ich mir wohl etwas anderes überlegen da ich wirklich so nicht weiter komme... thx schonmal.
Mahlzeit Georg89,
Diese Funtkion soll direkt anschliessen nach der positiven Überprüfung chkFormular ausgeführt werden!
Dann könntest Du sie z.B. dort in der Funktion auch aufrufen - wenn der Rückgabewert der Funktion chkFormular wahr ist.
Diese wird im "onsubmit"-Handler des Formulars ja auch aufgerufen.
Wie mache ich das die Funktion berechnung() direkt anschliessen nach der Überprüfung des Formulars durchgeführt wird?Also nachdem ich schon auf den Submit Button geklickt habe und diese keine Fehler gefunden hat!
Entweder s.o. oder Du überprüfst im Eventhandler den Rückgabewert und führst dann die Berechnungsfunktion aus.
Kann ich den zwei Funktionen mit einem Klick Ausführen lassen?
Ja. Das, was Du im Eventhandler notierst, ist Javascript-Code. Natürlich kannst Du da auch mehrere Funktionen aufrufen und Überprüfungen vornehmen. Allerdings würde ich - der Übersichtlichkeit halber - die verschiedenen Funktionsaufrufe in eine entsprechende Funktion kapseln.
MfG,
EKKi
Jetzt habe ich große Probleme damit dich zu verstehen.Ich bin nicht der theorie type also könntest du mir vielleicht helfen indem du mir diesen Quelltext korrigierst. Ich möchte ja wie schon gesagt beide Funktionen mit dem Klick auf den Submit Button aufrufen lassen, wobei die Berechnungs Funktion erst nach dem positiven ergebnis der chkFormular Funktion durchgeführt wird.
<form id="formular" action="mailto:g.riebau@badexperte.de" method="post" enctype="text/plain" name="formular" onsubmit="return chkFormular(700,300);berechnung()">
Wenn ich dort nur eine von beiden Funktionen eintrage funktioniert das ganze ohne probleme, aber logischerweise wird dann auch nur eine der beiden Funktion ausgeführt was ja so nicht sein soll.
Danke schonmal.
Mahlzeit Georg89,
Jetzt habe ich große Probleme damit dich zu verstehen.Ich bin nicht der theorie type also könntest du mir vielleicht helfen indem du mir diesen Quelltext korrigierst.
Könnte ich - aber mache ich nicht ... und zwar nicht, weil ich Dir NICHT helfen will, sondern im Gegenteil gerade WEIL ich Dir helfen will und Dir diese Art von "Hilfe" nichts bringen würde.
Gehen wir also mal der Reihe nach vor: Du möchtest also, dass beim Abschicken des Formulars zwei Aktionen nacheinander ausgeführt werden - wobei die zweite nur in Abhängigkeit von der ersten.
Um zu verstehen, was da überhaupt passiert, solltest Du Dich vielleicht zum Thema "<http://de.selfhtml.org/html/attribute/eventhandler.htm@title=Eventhandler in HTML> informieren. Ein Eventhandler wird durch ein entsprechendes Attribut im HTML-Element erzeugt (das geht zwar auch anders, aber bleiben wir erstmal dabei). Der Wert des Attributs ist nichts anderes als Javascript-Code, der ausgeführt wird, sobald das Ereignis eintritt.
Wenn in Deinem Fall also das Formular abgeschickt wird ("onsubmit"), wird der hinterlegte Code ausgeführt, also "return chkFormular(this,'i2008@ingo-webdesign.de',700,300)". Es wird also die Funktion "chkFormular()" mit einigen Parametern aufgerufen. Wenn Ihr Rückgabewert wahr ist, dann wird das Formular tatsächlich abgeschickt - wenn er falsch ist, bricht die Verarbeitung ab.
Du möchtest jetzt in Abhängigkeit davon, ob der Rückgabewert wahr ist, eine weitere Funktion aufrufen. Die einfachste Möglichkeit: Du erweiterst die Funktion "chkFormular()" und rufst dort Deine Berechnungsfunktion auf.
Die etwas kompliziertere Möglichkeit: da der Attributwert des Eventhandlers beliebigen Javascript-Code enthalten kann und es unübersichtlich wäre, dort mehrere Abfragen, Schleifen o.ä. unterzubringen, empfiehlt es sich, alles, was beim Eintreten des Ereignisses passieren soll, in einer Funktion zusammenzufassen:
<form ... onsubmit="return irgendeine_funktion(this);">
Die Deklaration dieser Funktion könnte dann z.B. so aussehen:
function irgendeine_funktion(frm) {
var ret = chkFormular(frm, 'i2008@ingo-webdesign.de', 700, 300);
if (ret) {
berechnung();
}
return ret;
}
Die Funktion "irgendeine_funktion()" wird also aufgerufen, wenn das Formular abgeschickt wird. Als Parameter bekommt sie das aktuelle Formular übergeben. Innerhalb der Funktion wird das Formular dann mit der Funktion "chkFormular()" überprüft. War diese Überprüfung erfolgreich, wird anschließend die Funktion "berechnung()" aufgerufen. Anschließend wird der Rückgabewert der Funktion "chkFormular()" zurückgegeben.
Diese Konstruktion ist alles andere als optimal - aber solange Du keine ausführlichere Problembeschreibung lieferst, kann man Dir kaum andere Optimierungsmaßnahmen empfehlen.
Generell solltest Du Dich aber erheblich mehr mit HTML und Javascript beschäftigen ...
MfG,
EKKi
Hallo Ekki,
Könntest du mir deine E-Mail Adresse, ICQ oder ähnliches evtl. zukommen lassen?Also nur wenn du mir wirklich helfen möchtest, würde mich echt freuen.
Müsste dir wohl die ganze Problematik etwas anders erklären....
Mfg
Georg89
Mahlzeit Georg89,
Könntest du mir deine E-Mail Adresse, ICQ oder ähnliches evtl. zukommen lassen?Also nur wenn du mir wirklich helfen möchtest, würde mich echt freuen.
Meine Email-Adresse findest Du in jedem meiner Postings. Wenn Du einen konkreten Auftrag zu üblichen Stundensätzen für mich hast, kannst Du mich gern darüber kontaktieren.
Allerdings finde ich es (für andere Leser und das Archiv) sinnvoller, Dein Problem hier im Forum zu lösen - so haben erheblich mehr Leute etwas davon.
Müsste dir wohl die ganze Problematik etwas anders erklären....
Wieso? Habe ich nicht verstanden, was Du willst? Dann erkläre Dein Problem deutlicher.
Hast Du nicht verstanden, was ich vorgeschlagen habe? Dann eigne Dir die entsprechenden Grundlagen an, versuche die Vorschläge umzusetzen und wenn Du konkrete Fragen zu konkreten Problemen hast, dann stelle diese hier im Forum.
MfG,
EKKi
Mahlzeit Georg89,
Aha. Und wie und wo wird die Javascript-Funktion jetzt aufgerufen?
Die Javascript Datei liegt in einer externen Datei... der Zugriff auf diese Datei wird im HTML Dokument so vollzogen:
Das war nicht die Frage. Die Frage war, wo die Funktion aufgerufen wird ...
Oder kann dies so nicht funktionieren, aber mit der Überprüfung des Formulars funktionierts ja auch so...
Was "funktioniert"? Wie ich bereits schrieb, solltest Du vielleicht erstmal eine vernünftige Fehler- bzw. Problembeschreibung liefern ...
MfG,
EKKi
Das war nicht die Frage. Die Frage war, wo die Funktion aufgerufen wird
Ich versteh nicht so genau was du jetzt von mir willst, aufgerufen wird die Funktion aus der externen Datei hiermit <script type="text/javascript" src="berechnung160.js"></script> und mehr ist doch garnicht nötig oder sehe ich das falsch?
Was "funktioniert"? Wie ich bereits schrieb, solltest Du vielleicht erstmal eine vernünftige Fehler- bzw. Problembeschreibung liefern ...
Eine genauere Problembeschreibung wie hier kann ich leider nicht liefern.
MFG
Georg89
Mahlzeit Georg89,
Das war nicht die Frage. Die Frage war, wo die Funktion aufgerufen wird
Ich versteh nicht so genau was du jetzt von mir willst, aufgerufen wird die Funktion aus der externen Datei hiermit <script type="text/javascript" src="berechnung160.js"></script>
Falsch. Dort wird sie deklariert. Aufgerufen wird sie hingegen nirgendwo. Oder Du hast relevante Teile Deines Codes bisher verschwiegen.
und mehr ist doch garnicht nötig oder sehe ich das falsch?
Ja, das siehst Du falsch. Es bringt absolut gar nichts, eine Funktion nur zu deklarieren - sie wird nicht automagisch irgendwann irgendwie ausgeführt. Den Funktionsaufruf musst Du schon selbst besorgen - entweder direkt in Deinem Code oder Event-gesteuert bei Benutzeraktionen.
Eine genauere Problembeschreibung wie hier kann ich leider nicht liefern.
Dann kann ich Dir leider auch nicht helfen ... Glaskugeln sind grad aus, kommen auch nicht wieder rein ... und in Deinen Kopf kann ich leider nicht schauen. Wenn Du Hilfe willst, MUSST Du Dich so ausdrücken und Dein Problem so beschreiben, dass Deine Leser Dich verstehen. Anders funktioniert es nicht.
MfG,
EKKi
Mahlzeit Georg89,
Hier der Quellcode der nicht funktionierenden 2ten Funktion:
Was bedeutet "nicht funktionierend"? Wenn die Funktion aufgerufen wird, schaut sie halt nach, ob der Wert eines bestimmten Formularelements "weiß" ist, und wenn ja, gibt's eine entsprechende Hinweismeldung und das Formularelement wird fokussiert. Was soll daran nicht funktionieren?
Oder - anders gefragt: was soll die Funktion EIGENTLICH machen?
Wenn ihr benötigt stelle ich auch gerne den gesamten Quellcode der JavaScript Datei rein oder auch den des HTML Dokumentes.
Erstmal wäre eine vollständige Problem- und Fehlerbeschreibung sinnvoll.
MfG,
EKKi