Eingabekontrolle eines Formularfeldes in einer Tabelle
Andreas
- javascript
Hallo
ich habe ein Problem bei der Eingabekontrolle eines Formularfeldes.
Hierzu habe ich mich an dem Beispiel von SELFHTML in einer abgespeckten Form orientiert:
<html>
<head>
<title>Formulareingaben </title>
<script type="text/javascript">
<!--
function chkFormular()
{
if(document.Formular.Zahl.value == "") {
alert("Bitte Zahl eingeben!");
document.Formular.Zahl.focus();
return false;
}
var chkZ = 1;
for(i=0;i<document.Formular.Zahl.value.length;++i)
if(document.Formular.Zahl.value.charAt(i) < "0"
|| document.Formular.Zahl.value.charAt(i) > "9")
chkZ = -1;
if(chkZ == -1) {
alert("Zahlsangabe keine Zahl!");
document.Formular.Zahl.focus();
return false;
}
}
//-->
</script>
</head>
<body bgcolor="#EEEEEE" text="#000000">
<h1>Formular</h1>
<form name="Formular" action="http://selfaktuell.teamone.de/cgi-bin/formview.pl" method="post" onSubmit="return chkFormular()">
<pre>
Zahl: <input type="text" size="40" name="Zahl">
Formular: <input type="submit" value="Absenden"><input type="reset" value="Abbrechen">
</pre>
</form>
</body>
</html>
OK - bis hier kann ich dem noch folgen. Mein Problem besteht darin, dass ich ein Feld überprüfen möchte, welches in einer Tabelle ist. Das Problem hierbei besteht darin, dass die Tabelle dynamisch erstellt wird und das zu prüfende Feld mehrmals auftreten kann (pro Datensatz einmal z.B. Alter von Teilnehmern)
TeilnehmerA AlterA <--Eingabefeld
TeilnehmerB AlterB <--Eingabefeld
etc.
An dieser Stelle mächte ich wissen, wie das statement auszusehen hat
if(document.Formular.elements[0].value == "")
funktioniert für das Alter des TeilnehmerA und für TeilnehmerB klappt es mit
if(document.Formular.elements[1].value == "")
Nun möchte ich aber alle Eingabefelder (Alter d. Teilnehmers) der Tabelle prüfen.
Falls Ihr mir hier weiterhelfen könntet, wäre ich Euch sehr dankbar.
MFG
Andreas
Hi,
einen Code kann ich dir nicht geben, da ich so etwas noch nicht programmiert hab.
Aber ich habe eine Idee, welche umsetzbar ist.
Also:
1.Bei der dynamischen erstellung der input Felder hängst du noch ein Index an den Namen des Feldes dran sieht dann so aus:
for($i=0;$bis ende;$i++)
{
<input type="text" name="teilnehmer_alter[i]" value=""></input>
}
2.Letzt kannst du die Eingabefelder überprüfen. Am besten machst du das auch mit einer for Schleife.
Schreibst du da ein Script für eine Ferienfreizeit oder ähnliches, dann können für uns gerne mal austauschen, habe schon einige für die Homepage unserer Freizeit geschrieben.
Mit freundlichen Grüßen
John
Hallo John, erst mal thanks für Deine schnelle Reaktion.
Die Idee mit dem Index habe ich auch so ähnlich gehabt, also bei mir heisst das Feld dann alter[i], aber wie um Himmels Wille mache ich das mit der Schleife?
Irgendwie müsste doch nun diese Schleife in die folgende Funktion implementiert werden....
function chkFormular()
{
if(document.Formular.Zahl.value == "") {
alert("Bitte Zahl eingeben!");
document.Formular.Zahl.focus();
return false;
....sonst wird wie gesagt nur das eine Feld geprüft?
Danke im voraus
Andreas
Hi,
Wie erzeugst Du den die dynamische Tabelle?
Die Schleife sollte dann etwa so aussehen:
ende=Zahl.length; //ermitteln der Array länge
for(i=0;ende;i++)
{
if(document.Formular.Zahl.value[i] == "") {
alert("Bitte Zahl eingeben an der Pos." + i);
document.Formular.Zahl[i].focus();
return false;
}
Sollte so gehen, wäre mein erster Versuch den ich starten würde.
Viel Spaß noch.
MFG
John
hi,
Die Schleife sollte dann etwa so aussehen:
na ja, noch nicht so ganz ...
ende=Zahl.length; //ermitteln der Array länge
for(i=0;ende;i++)
for(i=0; i<ende; i++)
{
if(document.Formular.Zahl.value[i] == "") {
feldname = "alter["+i+"]";
if(document.forms["formularname"].elements[feldname].value = "") {
alert("Bitte Zahl eingeben an der Pos." + i);
document.Formular.Zahl[i].focus();
diesen zugriff ebenfalls wie oben im if() ersetzen, oder besser gleich weglassen - denn bei mehreren fehlern ist es unsinnig, den cursor blitzschnell durch mehrere inputfelder hüpfen zu lassen.
return false;
}
gruss,
wahsaga