Supportnet Computer
Planet of Tech

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*

<!--
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
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??


<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:
<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:

 <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 möchte kostenlos eine Frage an die Mitglieder stellen:


Suche in allen vorhandenen Beiträgen: