Hallo, Mathias,
Warum machst du es so kompliziert? Willst du nur bestimmte Felder prüfen?
In meinem echten Formular sind tatsächlich nicht alle Felder unbedingt auszufüllen. Also liste ich mit
var zuCheckenderParameter = new Array();
zuCheckenderParameter[0] = "tabellenOrGrafikLinks";
zuCheckenderParameter[1] = "seitentyp";
/* Parameter vom Typ Text festlegen */
var zuCheckenderParameterText = new Array();
zuCheckenderParameterText[0] = "themaID";
// -->
</script>
explizit auf, welche Text oder radio-Felder _müssen_ gefüllt sein.
Es wäre viel einfacher, alle Formularfelder zu durchlaufen und zu prüfen.
Viel einfacher:
function check (formularobjekt) {
var ergebnis = "";
for (var i = 0; i < felder.length; i++) {
feldgruppe = document.forms[formularobjekt.name].elements[ felder[i] ];
feldanzahl = feldgruppe.length;
var auswahlGetroffen = false;
for (var j = 0; j < feldanzahl; j++) {
if (
(feldgruppe[j].type == "text" && feldgruppe[j].value != "") ||
feldgruppe[j].checked
) {
auswahlGetroffen = true;
}
}
if (!auswahlGetroffen) {
ueberschriftobjekt = document.getElementById(felder[i]);
ergebnis += ueberschriftobjekt.firstChild.nodeValue + "\n";
ueberschriftobjekt.style.color = "red";
}
}
if (ergebnis != "") {
window.alert("Bitte Angaben vervollständigen:\n\n" + ergebnis);
return false;
}
return true;
}
Ich habe deine Lösung so in dieser HTML-Seite eingebunden
<html><head><title>Test</title>
<script type="text/javascript" src="plausicheck.js"></script>
</head>
<body>
<form action="" onSubmit="return check(this)" name="formular">
<h1 id="themaID">Text-Eingaben</h1>
<p>
<input type="text" name="themaID" /> thema_ID<br />
</p>
<h1 id="tabellenOrGrafikLinks" >tabellenOrGrafikLinks</h1>
<input name="tabellenOrGrafikLinks" type="radio" value="tabelle"/> tabellenOrGrafikLinks<br />
<input name="tabellenOrGrafikLinks" type="radio" value="grafik" /> tabellenOrGrafikLinks<br />
<h1 id="seitentyp" >Seitentyp</h1>
<input name="seitentyp" type="radio" value="seitentyp0"/> seitentyp0<br />
<input name="seitentyp" type="radio" value="seitentyp1" /> seitentyp1<br />
<input name="seitentyp" type="radio" value="seitentyp2" /> seitentyp2<br />
<button type="submit" style="font-size: 9pt">Eingabe prüfen</button>
</form>
<hr/>
<script type="text/javascript">
var felder = ["tabellenOrGrafikLinks", "seitentyp", "themaID"];
</script>
</body></html>
und in meinem Test wird in dieser Seite von der check()-Methode bemängelt, dass das "text"-Feld themaID angeblich _nicht_ gefüllt ist, obwohl das Feld nicht leer war. Also scheint die Überprüfung
if (
(feldgruppe[j].type == "text" && feldgruppe[j].value != "") ||
feldgruppe[j].checked
) {
auswahlGetroffen = true;
}
in deiner Lösung den gleichen Manko haben, wie meine ursprüngliche Variante? ;-) Und ohne zweite Schleife kann man die Überprüfung nicht umsetzen?
gruss
Danke fürs Mitmachen
Gustav