• Das Erstellen neuer Accounts wurde ausgesetzt. Bei berechtigtem Interesse bitte Kontaktaufnahme über die üblichen Wege. Beste Grüße der Admin

Pflichtfelder bestimmen

jkwebdesign

New member
Ich möchte für mein Formular Pflichtfelder per JavaScript bestimmen. Alle Felder mit einem Stern * sind Pflichtfelder. Mein Quelltext:



<font face="Verdana" size="1">Die mit
einem Stern (*) versehenen Felder müssen ausgefüllt werden.<br>
</font>
<font face="Verdana" size="2"><br>
 </font></b></TD>
</tr>
<tr>
<TD width="523"><b><font face="Arial" size="2">Anrede:</font></b></TD>
<TD width="365"><font face="Arial">
<SELECT name=Anrede style="font-family: Arial; font-size: 10pt; border: 1px solid #000000; background-color: #FFFFFF"><OPTION value=Herr selected>Herr<OPTION
value=Frau>Frau</OPTION></SELECT></font></TD>
</tr>
<tr>
<TD width="523"><b><font face="Arial" size="2">Firma:</font></b></TD>
<TD width="365"><font face="Arial">
<INPUT name=Firma size="40" style="font-family: Arial; font-size: 10pt; border: 1px solid #000000; background-color: #FFFFFF"></font></TD>
</tr>
<tr>
<TD width="523"><b><font face="Arial" size="2">Vorname:</font></b></TD>
<TD width="365"><font face="Arial"><INPUT size=40 name=Vorname style="font-family: Arial; font-size: 10pt; border: 1px solid #000000; background-color: #FFFFFF"><b><font size="2"> *</font></b></font></TD>
</tr>
<tr>
<TD width="523"><b><font face="Arial" size="2">Nachname:</font></b></TD>
<TD width="365"><font face="Arial"><INPUT size=40 name=Nachname style="font-family: Arial; font-size: 10pt; border: 1px solid #000000; background-color: #FFFFFF"><b><font size="2"> *</font></b></font></TD>
</tr>
<tr>
<TD width="523"><b><font face="Arial" size="2">Strasse:</font></b></TD>
<TD width="365"><font face="Arial"><INPUT size=40 name=Strasse style="font-family: Arial; font-size: 10pt; border: 1px solid #000000; background-color: #FFFFFF"><b><font size="2"> *</font></b></font></TD>
</tr>
<tr>
<TD width="523"><b><font face="Arial" size="2">Plz:</font></b></TD>
<TD width="365"><font face="Arial"><INPUT size=6 name=Plz style="font-family: Arial; font-size: 10pt; border: 1px solid #000000; background-color: #FFFFFF"><b><font size="2"> *</font></b></font></TD>
</tr>
<tr>
<TD width="523"><b><font face="Arial" size="2">Ort:</font></b></TD>
<TD width="365"><font face="Arial"><INPUT size=40 name=Ort style="font-family: Arial; font-size: 10pt; border: 1px solid #000000; background-color: #FFFFFF"><b><font size="2"> *</font></b></font></TD>
</tr>
<tr>
<TD width="523"><b><font face="Arial" size="2">Land:</font></b></TD>
<TD width="365"><font face="Arial"><INPUT size=40 value=Deutschland name=Land style="font-family: Arial; font-size: 10pt; border: 1px solid #000000; background-color: #FFFFFF"><b>
*</b></font></TD>
</tr>
<tr>
<TD width="523"><b><font face="Arial" size="2">Telefon:</font></b></TD>
<TD width="365"><font face="Arial">
<INPUT size=40 value="+ 49" name=Telefon style="font-family: Arial; font-size: 10pt; border: 1px solid #000000; background-color: #FFFFFF"><b><font size="2"> *</font></b></font></TD>
</tr>
<tr>
<TD width="523"><b><font face="Arial" size="2">Telefax:</font></b></TD>
<TD width="365"><font face="Arial">
<INPUT size=40 value="+ 49" name=Telefax style="font-family: Arial; font-size: 10pt; border: 1px solid #000000; background-color: #FFFFFF"></font></TD>
</tr>
<tr>
<TD width="523"><b><font face="Arial" size="2">Email:</font></b></TD>
<TD width="365"><font face="Arial"><INPUT size=40 name=Email style="font-family: Arial; font-size: 10pt; border: 1px solid #000000; background-color: #FFFFFF"></font></TD>
</tr>
<tr>
<TD
colSpan=2 width="590">
<p align="center"><font face="Arial"><br>
<BR>
</font>
<INPUT type=submit value="Bestellen" name=Los style="font-family: Arial; font-size: 8pt; font-weight: bold; border-style: solid; border-width: 1; background-color: #999999"><br>
 </p>
<div align="center">
<CENTER>
<div align="center">
<p align="center"><font face="Arial" size="1">Mit Klick auf dem "Bestellen"
Button erklären Sie sich<br>
mit unseren AGB einverstanden.</font></div>
</form>



Wie müsste der JavaScript aussehen?

Jan
 
Hallo!
<script language="Javascript">

function check_form()
{
var must_be = new Array();

must_be[0] = "Vorname";
must_be[1] = "Nachname";
.....
.....
for(x=0;x<must_be.length;x++)
{
if(window.document.forms[0].element[must_be[x]].length<=1)
{
alert("Bitte" + must_be[x] + "richtig ausfüllen");
window.document.forms[0].element[must_be[x]].focus;
return 0;
}
}
window.document.forms[0].submit();

}
</script>
Habs zwar nicht probiert müßte aber funktionieren.
Jetzt mußt du beim Sende- Button noch den folgenden Event-Handler hinzufügen: onsubmit="check_form()".
Den <form> - Tag mit der action und method nicht vergessen ;-) , sonst gehts nicht.

Dann mußt du noch alle Mußfelder im Array must_be initialisieren und fertig, hoff ich halt.
Sonst nochmals melden.
mfg
Andi
 
Was meinst du mit: "Dann mußt du noch alle Mußfelder im Array must_be initialisieren"?

Welche Parameter muss ich genau hinzufügen?
Muss der JavaScript in den HEAD?

Jan
 
Hallo!

Der Code sollte in den Head.

Mit must_be initialisieren meine ich folgendes:

must_be[0]="Vorname";
must_be[1]="Nachname";

usw.

Du schreibst einfach alle Mussfelder in das must_be Array.
Es geht dann weiter mit:

must_be[2]="Strasse";
must_be[3]="Plz";
must_be[4]="Ort";
must_be[5]="Land";
must_be[6]="Telefon";

Alles klar ?

mfg
Andi
 
Danke, aber irgendwie funktioniert das trotzdem nicht. Hier ist mein Quelltext. Was habe ich falsch gemacht.


<html>
<head>
<script language="Javascript">

function check_form()
{
var must_be = new Array();

must_be[0] = "Vorname";
must_be[1] = "Nachname";
must_be[2] = "Strasse";
must_be[3] = "Plz";
must_be[4] = "Ort";
must_be[5] = "Land";
must_be[6] = "Telefon";

for(x=0;x<must_be.length;x++)
{
if(window.document.forms[0].element[must_be[x]].length<=1)
{
alert("Bitte" + must_be[x] + "richtig ausfüllen");
window.document.forms[0].element[must_be[x]].focus;
return 0;
}
}
window.document.forms[0].submit();

}
</script>
</head>
<body>
<form method="post" action=mailto:"sunshineman@gmx.at?subject=Bestellung" enctype="text/plain">
<CENTER>
<TABLE cellSpacing=0 cellPadding=8 border=0>
<TBODY>
<TR>
<TD class=tabelle3 vAlign=top>Anzahl</font></TD>
<TD class=tabelle3 vAlign=top>Artikel</font></TD>
<TD class=tabelle3 vAlign=top>Art.Nr.</font></TD>
<TD class=tabelle3 vAlign=top>Einzelpreis</font></TD>
<TD class=tabelle3 vAlign=top>Gesamtpreis</font></TD>
<TR>
<p>
<SCRIPT language=JavaScript>
<!--

var gesamtpreis=0;
for (i in items) {
if (items[3] > 0) {

document.write('<TR><TD class=tabelle>' +items[3]+ '</TD>\n');
document.write('<TD class=tabelle>' +items[0]+ '</TD>\n');
document.write('<TD class=tabelle>' +items[1]+ '</TD>\n');
document.write('<TD class=tabelle>' +items[2]+ '</TD>\n');
document.write('<TD class=tabelle ALIGN="Right">' +rechnen()+ ' €</TD></TR>\n');

}
}
document.write('<TR><TD class=tabelle2 ALIGN="Right" COLSPAN=4>Gesamtsumme ( Brutto)</TD><TD class=tabelle2 ALIGN="Right"><u>' +gesamt()+ ' €</u></TD>');
document.write('</TR></TABLE>');



for (i in items) {
if (items[3] > 0) {

document.write('<INPUT TYPE="HIDDEN" NAME="Anzahl' +i+ '" VALUE="' +items[3]+ '">');
document.write('<INPUT TYPE="HIDDEN" NAME="Bezeichnung' +i+ '" VALUE="' +items[0]+ '">');
document.write('<INPUT TYPE="HIDDEN" NAME="ArtNr' +i+ '" VALUE="' +items[1]+ '">');
document.write('<INPUT TYPE="HIDDEN" NAME="Einzelpreis' +i+ '" VALUE="' +items[2]+ '">');
document.write('<INPUT TYPE="HIDDEN" NAME="Gesamtpreis' +i+ '" VALUE="' +rechnen()+ ' €">');

}
}

//-->
</SCRIPT>
<p>
<hr color="#000000" width="70%">
<p>
<br>
<table width="433">
<tr>
<TD colSpan=2 width="590">
<p align="center"><font face="Arial"><BR></font><B>
<font face="Verdana" size="2">Rechnungs- und Lieferadresse:<br>
 </font></B><p align="center"><b><font face="Verdana" size="1">Die mit
einem Stern (*) versehenen Felder müssen ausgefüllt werden.<br>
</font>
<font face="Verdana" size="2"><br>
 </font></b></TD>
</tr>
<tr>
<TD width="523"><font face="Arial" size="2">Anrede:</font></TD>
<TD width="365"><font face="Arial">
<SELECT name=Anrede style="font-family: Arial; font-size: 10pt; border: 1px solid #000000; background-color: #FFFFFF"><OPTION value=Herr selected>Herr<OPTION
value=Frau>Frau</OPTION></SELECT></font></TD>
</tr>
<tr>
<TD width="523"><font face="Arial" size="2">Firma:</font></TD>
<TD width="365"><font face="Arial">
<INPUT name=Firma size="40" style="font-family: Arial; font-size: 10pt; border: 1px solid #000000; background-color: #FFFFFF"></font></TD>
</tr>
<tr>
<TD width="523"><b><font face="Arial" size="2">Vorname:</font></b></TD>
<TD width="365"><font face="Arial"><INPUT size=40 name=Vorname style="font-family: Arial; font-size: 10pt; border: 1px solid #000000; background-color: #FFFFFF"><b><font size="2"> *</font></b></font></TD>
</tr>
<tr>
<TD width="523"><b><font face="Arial" size="2">Nachname:</font></b></TD>
<TD width="365"><font face="Arial"><INPUT size=40 name=Nachname style="font-family: Arial; font-size: 10pt; border: 1px solid #000000; background-color: #FFFFFF"><b><font size="2"> *</font></b></font></TD>
</tr>
<tr>
<TD width="523"><b><font face="Arial" size="2">Straße & Hausnr.:</font></b></TD>
<TD width="365"><font face="Arial"><INPUT size=40 name=Strasse style="font-family: Arial; font-size: 10pt; border: 1px solid #000000; background-color: #FFFFFF"><b><font size="2"> *</font></b></font></TD>
</tr>
<tr>
<TD width="523"><b><font face="Arial" size="2">Plz:</font></b></TD>
<TD width="365"><font face="Arial"><INPUT size=6 name=Plz style="font-family: Arial; font-size: 10pt; border: 1px solid #000000; background-color: #FFFFFF"><b><font size="2"> *</font></b></font></TD>
</tr>
<tr>
<TD width="523"><b><font face="Arial" size="2">Ort:</font></b></TD>
<TD width="365"><font face="Arial"><INPUT size=40 name=Ort style="font-family: Arial; font-size: 10pt; border: 1px solid #000000; background-color: #FFFFFF"><b><font size="2"> *</font></b></font></TD>
</tr>
<tr>
<TD width="523"><b><font face="Arial" size="2">Land:</font></b></TD>
<TD width="365"><font face="Arial"><INPUT size=40 value=Deutschland name=Land style="font-family: Arial; font-size: 10pt; border: 1px solid #000000; background-color: #FFFFFF"><b>
*</b></font></TD>
</tr>
<tr>
<TD width="523"><b><font face="Arial" size="2">Telefon:</font></b></TD>
<TD width="365"><font face="Arial">
<INPUT size=40 value="+ 49" name=Telefon style="font-family: Arial; font-size: 10pt; border: 1px solid #000000; background-color: #FFFFFF"><b><font size="2"> *</font></b></font></TD>
</tr>
<tr>
<TD width="523"><font face="Arial" size="2">Telefax:</font></TD>
<TD width="365"><font face="Arial">
<INPUT size=40 value="+ 49" name=Telefax style="font-family: Arial; font-size: 10pt; border: 1px solid #000000; background-color: #FFFFFF"></font></TD>
</tr>
<tr>
<TD width="523"><font face="Arial" size="2">Email:</font></TD>
<TD width="365"><font face="Arial"><INPUT size=40 name=Email style="font-family: Arial; font-size: 10pt; border: 1px solid #000000; background-color: #FFFFFF"></font></TD>
</tr>
<tr>
<TD
colSpan=2 width="590">
<p align="center"><font face="Arial"><br>
<BR>
</font>


<INPUT onsubmit="check_form()" type=submit value="Bestellen" style="font-family: Arial; font-size: 8pt; font-weight: bold; border-style: solid; border-width: 1; background-color: #999999"><br>
 </p>
<div align="center">
<CENTER>
<div align="center">
<p align="center"><font face="Arial" size="1">Mit Klick auf dem "Bestellen"
Button erklären Sie sich<br>
mit unseren AGB einverstanden.</font></div>
</form>
</body>
</html>


Jan
 
Mein Fehler

Hallo!

War mein Fehler.

Bei document.forms[0].element sollte es nicht element sondern elements lauten.

Hab das Script nicht getestet sondern einfach so reingeschrieben, kann schon sein das es noch ein paar Fehler hat.

mfg
Andi
 
Falls du IE verwendest mach doch mal einen Doppelklick in das untere linke graue Feld des Explorers wo normalerweise Fertig drin steht(müßte dann Fehler mit einem gelben Rufezeichen stehen).
Falls Netscape verwendet wird bitte in der Adressleiste 'javascript:' eingeben.

Poste dann bitte den Fehler.

mfg
Andi
 
Ist mir zuerst gar nicht aufgefallen, da die Seite in einem Frameset angezeigt wird.
Dort steht (IE 6):

Zeile: 90
Zeichen: 2
Fehler: 'items' ist undefiniert
Code: 0


Jan
 
Zuletzt bearbeitet:
Hallo!

Sagt doch alles oder???

Er kennt die Variable items nicht in der Anzahl,Artikel,ArtikelNr. drinnen steht.
Weiss nicht für was das gebraucht wird oder woher diese Daten kommen sollen???

mfg
..:::Andi:::..
 
Die Daten kommen von einem Online-Shop. Der Warenkorb dazu sieht so aus:


<script language="JavaScript">
<!--

if (self.basket != "") {

document.write('<TR><TD class=tabelle3 VALIGN="TOP"><b>Anzahl</b></font></TD>');
document.write('<TD class=tabelle3><b>Artikel</b></font></TD>');
document.write('<TD class=tabelle3><b>Art.Nr.</b></font></TD>');
document.write('<TD class=tabelle3><b>Einzelpreis</b></font></TD>');
document.write('<TD class=tabelle3><b>Gesamtpreis</b></font></TD>');
document.write('<TD class=tabelle3><b>Aktion</b></TD></TR>');

var gesamtpreis=0;
for (i in items) {
if (items[3] > 0) {

document.write('<TR><TD><INPUT TYPE=TEXT NAME="menge' +i+ '" VALUE="' +items[3]+ '" SIZE="2" class="button"></TD>\n');
document.write('<TD class=tabelle>' +items[0]+ '</TD>\n');
document.write('<TD class=tabelle>' +items[1]+ '</TD>\n');
document.write('<TD class=tabelle>' +items[2]+ '</TD>\n');
document.write('<TD class=tabelle ALIGN="Right">' +rechnen()+ ' €</TD>\n');
document.write('<TD class=tabelle><div align="center"><A HREF="#" onClick="del_me(' +i+ ')"><img src="../images/x.jpg" border="0" alt="Produkt aus dem Warenkorb entfernen"></A></TD></div></TR>\n');
}
}
document.write('<TR><TD class=tabelle2 ALIGN="Right" COLSPAN=4>Gesamtsumme ( Brutto) :</TD><TD class=tabelle2 ALIGN="Right"><u><em>' +gesamt()+ ' €</em></u></TD>');
document.write('</p><b<TD class=tabelle2><BR></TD><P></TR></TABLE><P><div align="center"><br><HR WIDTH="50%" noshade><p><br>');
document.write('<A HREF="#" onClick="aktion(1)"><img src="../images/ewagen2.gif" border="0" alt="Warenkorb leeren"></A>');
}
else { if (empty) location = wohin;
else document.write('<TR><TD class=tabelle COLSPAN=6 VALIGN="TOP">Im Warenkorb befinden sich momentan keine Produkte.</TD></TR></TABLE></font>');
}
//-->
</script>


und der Warenkorb steuert eine Datei namens shop.js an. Die Datei sieht so aus:


var leer = 0;
var wohin = 'basketempty.htm';
var maxmenge = 100;
var error = '\nDie eingegebene Menge ist entweder zu hoch oder zu niedrig!';
var del_art = 'Möchten Sie diesen Artikel wirklich löschen?';
var del_all = 'Möchten Sie den kompletten Warenkorb wirklich löschen?';
var leer = '\nSie haben bisher keine Produkte in den Warenkorb abgelegt.';
var basket = parent.basket.substring(0, parent.basket.length-3);
if (basket != null) items = basket.split('###');
for (i in items) items = items.split('|');

function runden(wert) {
k = (Math.round(100 * (wert + 0.00001)) / 100 + 0.001) + '';
k = k.substring(0, k.indexOf('.') + 3);
return k;
}
function rechnen() {
zsumme = runden(parseFloat(items[2]))*runden(parseFloat(items[3]));
gesamtpreis += runden(parseFloat(items[2]))*runden(parseFloat(items[3]));
ergebnis = runden(zsumme);
return ergebnis;
}
function gesamt() {
gesamtpreis = runden(gesamtpreis);
return gesamtpreis
}
function dazu(name,nummer,preis,menge) {
if(menge <= 0 || menge > maxmenge)
alert(error);
else
if (confirm('Möchten Sie '+menge+' x '+name+' im Warenkorb ablegen? '))
parent.basket += name+'|'+nummer+'|'+preis+'|'+menge+'###';
}
function del_me(cnt) {
if (confirm(del_art)) {
var del = '';
basket = parent.basket.substring(0, parent.basket.length-3);
if (basket != null) items = basket.split('###');
for (i in items) {
if (i != cnt) del += items +'###';
}
parent.basket = del;
self.location = 'warenkorb.htm';
}
}
function aktion(x) {
if (x==1) {
if (confirm(del_all))
{ parent.basket = ''; self.location='warenkorb.htm'; }
}
if (x==2) {
if (parent.basket != "") parent.inhalt.location = 'bestellen.htm';
else alert(leer);
}

}



Ist dort irgendwo ein Fehler?


Jan
 
Würde es vielleicht funktionieren, ein passendes PHP Script zu schreiben, welches die Felder auf Gültigkeit überprüft, die IP des Users loggt und eine EMail abschickt? Das wäre für User, die kein Mailprogramm haben besser. Vielleicht ist es dann auch möglich eine Antwortseite anzusteuern odereinen Antworttext.

Jan

P.S.: Leider kann ich kein PHP programmieren. Vielleicht kann mir jemand anders so etwas aber machen?
 
Zuletzt bearbeitet:
Hallo!

Aha, die Variable items wird in diesem Script aber nicht definiert, darin sollten wahrscheinlich alle Daten für die verschiedenen Artikel drinstehen.

Vielleicht solltest du mal versuchen alles bis auf den Javascript - Part von mir zu löschen und das ganze dann nochmal versuchen.

mfg
..:::Andi:::..
 
Hab ich schon versucht. Es funktioniert trotzdem nicht. Würde das denn mit einem PHP Script funktionieren? Das wäre mir irgendwie leiber, da keine weiteren Fehler dazukommen. Kennst du ein PHP Script, welches meine Daten versendet, die IP des User loggt (und an mich versendet) und nach dem Senden auf eine Antwortseite linkt?

Genau so ein Script bräuchte ich.

Jan


P.S.: Soll ichs mal in einem anderen Board versuchen?
 
Hallo!

PHP:

<?php

if($Vorname &&
$Nachname &&
$Strasse &&
$Plz &&
$Ort &&
$Land &&
$Telefon)
{
$body = "EMail von ".$Vorname." ".$Nachname."\nStrasse: ".$Strasse."\nOrt: ".$Plz." ".$Ort."\nLand: ". $Land ."\nTelefon: ".$Telefon."\nIP: ".$REMOTE_ADDR."\n";
mail("meine@email.adresse","Mail von Homepage",$body);
?>

Antwort-Page Inhalt

<?php
}
else
{
echo "<script language=\"Javascript\">alert(\"Bitte alle Pflichtfelder (*) ausfüllen\");\nhistory.back();</script>"
}
?>


Sollte funktionieren. STatt Antwort-Page Inhalt mußt du hier den Code deiner Antwort-Page reinbasteln.
 
Muss das zweite php (mit dem JavaScript drin) auch in die PHP-Datei?
Kann ich die PHP Datei so ansteuern:

<form method="post" action="mail.php">


Oder geht das nur (oder besser) mit method=get" ?

Jan


P.S.: Sonst scheint das Teil richtig gut zu gehen.
 
Hallo!

Sollte eigentlich mit diesem <form>-Tag funktionieren.
Du kannst auch GET verwenden, jedoch würde ich POST bevorzugen.

Der zweite Teil ist dazu da den User wieder zurück zu befördern falls er eines der Pflichtfelder nicht ausgefüllt hat, sollte also dort bleiben wo es ist.
 
Also erstmal vielen vielen Dank für die etwas längere Hilfe!

Drei Fragen habe ich allerdings noch:

1. Kann ich wo du "Antwort Page Inhhalt" hingeschrieben hast, auch einen HTML Code einfügen?
2. Weißt du, wie man den Host des Users per PHP herausbekommen kann?
3. Ich habe das Script getestet. Mir wurde das folgende angezeigt:


Parse error: parse error, expecting `','' or `';'' in /homepages/9/d24044739/htdocs/scripthosting/uiiia/mail.php on line 82


Was hat das zu sagen? Muss das Script in einen CGI-Bin oder kann es in einem "normalem" Webspace mit PHP Unterstützung benutzt werden?


Jan
 
Hallo!

1. Der Part wo Antwort Page Inhalt steht ist eigentlich für HTML gedacht

2. $host=gethostbyaddr($REMOTE_ADDR);

3. Der Parse Error bedeutet, daß bei folgender Zeile der Strichpunkt am Ende( von mir) vergessen wurde:

echo "<script language=\"Javascript\">alert(\"Bitte alle Pflichtfelder (*) ausfüllen\");\nhistory.back();</script>"

also sieht die Zeile dann so aus:

echo "<script language=\"Javascript\">alert(\"Bitte alle Pflichtfelder (*) ausfüllen\");\nhistory.back();</script>" ;
 
Zurück
Oben