Supportnet / Forum / Skripte(PHP,ASP,Perl...)
Nummercheck
Frage
Halli Hallo
Ich habe einen Formmailer gebastelt und ein Javascript von einem Kollegen bekommen, das die Felder überprüft. Sieht so aus:
[code]<!--
function checkForm()
{
var valid = true;
var err_msg = "";
f = document.forms["kontakt"];
if (f.Name.value == "") { valid = false; err_msg += "> Name\n";}
if (f.Vorname.value == "") { valid = false; err_msg += "> Vorname\n";}
if (f.email.value == "") {
valid = false; err_msg += "> Email\n";
}
else
{
email = f.email.value
format = /^(.+)@(.+)\.(.{2,3})/;
format.exec(email);
if (!(RegExp.$1 && RegExp.$2 && RegExp.$3)) {
{ valid = false; err_msg += "> Email\n";}
f.email.focus();
}
}
if (valid == false) {
alert("Folgende Angaben fehlen oder sind nicht korrekt:\n\n" + err_msg);
}
else
{
f.submit();
}
}
//-->[/code]
Nun möchte ich, das das Feld email nicht mehr überprüft wird, sondern das Textfeld "Ticketnummer". Darin muss mindestens einmal eine Nullvorkommen. Die Nummer wird automatisch in einem Textfeld generiert, die Zahl "0" kommt aber zu 100% darin vor.
Wie muss dann dieses JS aussehen? Habe es nun folgendermassen zusammengestellt, es geht aber nicht:
[code]<!--
function checkForm()
{
var valid = true;
var err_msg = "";
f = document.forms["kontakt"];
if (f.Name.value == "") { valid = false; err_msg += "> Name\n";}
if (f.Vorname.value == "") { valid = false; err_msg += "> Vorname\n";}
if (f.Ticketnummer.value == "") {
valid = false; err_msg += "> Ticketnummer\n";
}
else
{
Ticketnummer = f.Ticketnummer.value
format = /^(.+)0(.+)\.(.{2,3})/;
format.exec(Ticketnummer);
if (!(RegExp.$1 && RegExp.$2 && RegExp.$3)) {
{ valid = false; err_msg += "> Ticketnummer\n";}
f.Ticketnummer.focus();
}
}
if (valid == false) {
alert("Folgende Angaben fehlen oder sind nicht korrekt:\n\n" + err_msg);
}
else
{
f.submit();
}
}
//-->[/code]
Gruss
axe
Antwort 1 von rfb
function checkForm()
{
var valid = true;
var err_msg = "Folgende Angaben fehlen oder sind nicht korrekt:\n\n";
f = document.forms["kontakt"];
if (f.Name.value == "") { valid = false; err_msg += "> Name\n";}
if (f.Vorname.value == "") { valid = false; err_msg += "> Vorname\n";}
if (f.Ticketnummer.value.indexOf("0") == -1) {
valid = false; err_msg += "> Ticketnummer\n";
}
if (valid == false) {
alert(err_msg);
return false;
}
else
{
return true;
}
}
einzubinden mit
<form ... action="..." onsubmit="return checkForm()">
sonst funktionierts ohne JavaScript nicht.
Evtl. ist es auch sinnvoller, die Länge der Eingaben bei Name, Vorname zu checken.
Antwort 2 von axe
Vielen Dank. Ich musste es noch ein wenig umstellen, das es mit meinerm Formmailer geht, ob es so perfekt ist, weiss ich nicht, aber es funktioniert *smile*
Gruss und nochmals Danke
axe
<!--
function checkForm()
{
var valid = true;
var err_msg = "";
f = document.forms["kontakt"];
if (f.Name.value == "") { valid = false; err_msg += "> Name\n";}
if (f.Vorname.value == "") { valid = false; err_msg += "> Vorname\n";}
if (f.Ticketnummer.value.indexOf("0") == -1) {
valid = false; err_msg += "> Ticketnummer\n";
}
if (valid == false) {
alert("Folgende Angaben fehlen oder sind nicht korrekt:\n\n" + err_msg);
}
else
{
f.submit();
}
}
//-->
Gruss und nochmals Danke
axe
Antwort 3 von rfb
wenn du das so umbauen musst, deutet das ganz stark darauf hin, dass du in deinem Formular nicht
Übrigens: Falls du Seiten für den Bund, Länder, Kommunen, oder Träger öffentlicher Belange erstellst - dort ist derartiges gemäß BITV nicht zulässig.
onsubmit
nutzt sondern irgendeinen Button mit onclick
"missbrauchst". Dies führt dazu, dass das Formular ohne JS völlig unbrauchbar ist - zumindest bei meinen Seiten wäre mir jeder derartige unnötige Feedback-Verlust durch schlechte Formular-Verarbeitung zu schade.Übrigens: Falls du Seiten für den Bund, Länder, Kommunen, oder Träger öffentlicher Belange erstellst - dort ist derartiges gemäß BITV nicht zulässig.
Antwort 4 von axe
Mein Script sieht momentan folgendermasen aus. Ist das nicht OK??
Musste den PHP (Formmailer) Teil löschen - zu wenig Platz *smile*
<head>
<TITLE>FAQ Anfrage</TITLE>
<link rel="SHORTCUT ICON" href="favicon.ico">
<script language="JavaScript" src="../js/checkform_ticket.js"></script>
<script language="JavaScript" src="../js/popupzentriert.js"></script>
<script language="JavaScript" src="../js/schriften.js"></script>
<script type="text/javascript">
<!--
function eintrag() {
var jetzt = new Date();
document.getElementById("uhr").value=jetzt.getDate()+""+(jetzt.getMonth()+1)+""+jetzt.getFullYear()+"-"+format(jetzt.getHours())+""+format(jetzt.getMinutes())+""+format(jetzt.getSeconds());
}
function format(z) {
return (z<10)?"0"+z:z;
}
//-->
</script>
</head>
<body bgcolor="#d4e6ef" onload="eintrag()">
<center><font class="titel">FAQ Anfrage</font></center><br>
<form onsubmit="return checkForm()" name="kontakt" action="<?php print $_SERVER[´PHP_SELF´]; ?>" method="post">
<table bgcolor="#d4e6ef" width="350" align="center" border="0" cellspacing="1" cellpadding="1">
<tr>
<td bgcolor="#7878B3" width="80%"><font face="Arial Narrow" size="2">Ihre Ticketnummer</font></td>
<td bgcolor="#999999" width="20%"><font face="Arial Narrow" size="1"><input type="text" id="uhr" name="Ticketnummer" value="Error" size="16" readonly="readonly"> </font></td>
</tr>
<tr>
<td bgcolor="#7878B3" width="50%"><font face="Arial Narrow" size="2">Name</font></td>
<td bgcolor="#999999" width="50%"><font face="Arial Narrow" size="1"><input class="input" type="text" name="Name" value="" size="16"></font></td>
</tr>
<tr>
<td bgcolor="#7878B3"><font face="Arial Narrow" size="2">Vorname</font></td>
<td bgcolor="#999999"><font face="VArial Narrow" size="1"><input class="input" type="test" name="Vorname" value="" size="16"></font></td>
</tr>
<tr>
<td bgcolor="#7878B3"><font face="Arial Narrow" size="2">E-Mailadresse</font></td>
<td bgcolor="#999999"><font face="Arial Narrow" size="1"><input class="input" type="text" name="email" value="" size="16"></font></td>
</tr>
<tr>
<td bgcolor="#7878B3" width="50%"><font face="Arial Narrow" size="2">Titel</font></td>
<td bgcolor="#999999" width="50%"><font face="Arial Narrow" size="1"><input class="input" type="text" name="Titel" value="" size="16"></font></td>
</tr>
<tr>
<td bgcolor="#7878B3"><font face="Arial Narrow" size="2">Problem</font></td>
<td bgcolor="#999999"><font face="Arial Narrow" size="2"><textarea class="input" name="Nachricht" rows="5" cols="25" wrap="hard" onChange="CheckLen(this)" onFocus="CheckLen(this)" onKeyDown="CheckLen(this)" onKeyUp="CheckLen(this)"></textarea><br></font></td>
</tr>
<tr>
<td bgcolor="#7878B3"><font face="Arial Narrow" size="2"></font></td>
<td bgcolor="#7878B3"><input class="text" type="button" OnClick="checkForm()" value="Senden" /> <INPUT class="text" type="button" value="Fenster schliessen" name="B3" onclick="self.close()"></td>
</tr>
</table>
</center>
</td>
</tr>
</table>
</body>
</html>
Musste den PHP (Formmailer) Teil löschen - zu wenig Platz *smile*
Antwort 5 von rfb
nach langem Suchen (umständlicher Code, du solltest mal das völlig veraltete <font> durch CSS ersetzen) endlich gefunden:
<input class="text" type="button" OnClick="checkForm()" value="Senden" />
ersetzen durch:
Übrigens: Absende- und Fensterschließbutton so dicht nebeneinander? Ein bisschen Arthritis und weg sind die Formulareingaben ...
Nochmal übrigens: wozu gibst du CSS-Klassen (class="text") in den input-tags an, ich finde in deinem Code sonst keine Hinweise auf CSS-Nutzung?
<input class="text" type="button" OnClick="checkForm()" value="Senden" />
ersetzen durch:
<input type="submit" value="Senden">
und dann das JavaScript aus A1.Übrigens: Absende- und Fensterschließbutton so dicht nebeneinander? Ein bisschen Arthritis und weg sind die Formulareingaben ...
Nochmal übrigens: wozu gibst du CSS-Klassen (class="text") in den input-tags an, ich finde in deinem Code sonst keine Hinweise auf CSS-Nutzung?
Antwort 6 von axe
OK - dann versuch ich dies noch so abzuändern.
Betreffend der Schrift, ich verwerwende es per JS:
Und das Script sieht so aus:
Ich weiss, ein wenig veraltet. Werde es mal auf CSS umstellen, doch alles der Reihe nach :)
Betreffend der Schrift, ich verwerwende es per JS:
<script language="JavaScript" src="../js/schriften.js"></script>
Und das Script sieht so aus:
<!--
document.write("<STYLE TYPE=text/css>");
document.write("a { color: #000000; font-size: 13px; font-family: arial narrow; text-decoration: none }");
document.write("a:active { color: #000000; font-size: 13px; font-family: arial narrow; text-decoration: none }");
document.write("a:hover { color: #000000; font-size: 13px; font-family: arial narrow; text-decoration: overline underline }");
document.write("a:visitet { color: #000000; font-size: 13px; font-family: arial narrow; text-decoration: none }");
document.write(".titel { color: #0000ff; font-size: 18px; font-family: arial narrow; font-weight: bold }");
document.write(".menu { color: #000000; font-size: 17px; font-family: arial narrow; font-weight: bold }");
document.write(".titel-link { color: #0000ff; font-size: 18px; font-family: arial narrow; font-weight: bold }");
document.write(".titel-red { color: #ff0000; font-size: 18px; font-family: arial narrow; font-weight: bold }");
document.write(".u_titel { color: #000000; font-size: 13px; font-family: arial narrow; font-weight: bold }");
document.write(".text { color: #000000; font-size: 13px; font-family: arial narrow; font-weight: normal }");
document.write(".text_1 { color: #000000; font-size: 12px; font-family: arial narrow; font-weight: normal }");
document.write(".gruen { color: #008000; font-size: 13px; font-family: arial narrow; font-weight: normal }");
document.write(".rot { color: #ff0000; font-size: 13px; font-family: arial narrow; font-weight: normal }");
document.write(".text-red { color: #c82424; font-size: 10px; font-family: arial narrow; font-weight: normal }");
document.write(".error_nlprof { color: #c82424; font-size: 10px; font-family: arial narrow; font-weight: normal }");
document.write(".text-green { color: #339966; font-size: 10px; font-family: arial narrow; font-weight: normal }");
document.write(".ok_nlprof { color: #339966; font-size: 10px; font-family: arial narrow; font-weight: normal }");
document.write(".text-black { color: #000000; font-size: 10px; font-family: arial narrow; font-weight: normal }");
document.write(".mini { color: #999999; font-size: 10px; font-family: arial narrow; font-weight: normal }");
document.write(".black-mini { color: #000000; font-size: 10px; font-family: arial narrow; font-weight: normal }");
document.write("body { scrollbar-base-color: #dddddd; scrollbar-track-color: #dddddd; scrollbar-face-color: #dddddd; scrollbar-highlight-color: #d4e6fe; scrollbar-3d-light-color: #d4e6fe; scrollbar-dark-shadow-color: #d4e6fe; scrollbar-shadow-color: #d4e6fe; scrollbar-arrow-color: #d4e6fe;}");
document.write("</STYLE>");
//-->
Ich weiss, ein wenig veraltet. Werde es mal auf CSS umstellen, doch alles der Reihe nach :)
Antwort 7 von axe
Ach ja - nun geht es. Und die Buttons nehme ich auch noch ein wenig auseinander. Aber bin ja noch immer am basteln. Durch basteln lernt man - oder durch Euch/Dich ;)
Antwort 8 von rfb
Zitat:
Ich weiss, ein wenig veraltet.
zumindest sehr sehr umständlich und wie alle JavaScript-Lösungen unzuverlässig.Ich weiss, ein wenig veraltet.