Inhalt eines Arrays überprüfen?

redlama

Erfahrenes Mitglied
Hallo zusammen!

Ich habe ein Array unter HTML, das ich an JavaScript übergebe.
Jetzt habe ich das Problem, dass ich nicht wirklich (eigentlich so gut wie gar keine) Ahnung von JavaScript habe.
Ich muss aber überprüfen ob dieses Array mit mindestens einem Element gefüllt ist. Ein "alert" kriege ich ja noch hin, falls das Array leer sein sollte, aber wie finde ich heraus ob das Array leer ist oder nicht?

Bin für jede Idee oder jeden Vorschlag dankbar.

redlama
 
Hi,

kommt ganz darauf an, wie Dein Array definiert ist. Willst Du die Größe des Array auslesen (dynamische Arrays) geht es mit
PHP:
meinArray.length;
Ansonsten kannst Du natürlich die Elemente einzeln abfragen:
PHP:
var foundOne = 0;
for (i = 0; i < meinArray.length; i++) {
    if (meinArray[i]) {
        foundOne++;
    }
}
if (foundOne) {
    alert(foundOne + " Elemente gesetzt");
} else {
    alert("keine Elemente gesetzt");
}
das geht natürlich nur, wenn der Wert 0 als "nicht gesetzt" gilt. Ob eine explizite Überprüfung nach NaN bzw. Null möglich ist, habe ich jetzt nicht ausprobiert.

Gruß
 
Also entweder bin ich zu blöd, oder geht nicht!
(Ich vermute eher das Erste ...)

Hier mal mein Quellcode:

<td width="244">
<div align="left">
<h1 align="left">
<input type="text" size="18" name="Name">
</h1>
</div>
</td>

<select size="4" name="Unterkunft[]" multiple>
<option value="Ferienhaus">Ferienhaus</option>
<option value="Ferienwohnung">Ferienwohnung</option>
<option value="Gästehaus">Gästehaus</option>
<option value="Hotel">Hotel</option>
<option value="Hotelappartement">Hotelappartement</option>
<option value="Pension">Pension</option>
<option value="Privatunterkunft">Privatunterkunft</option>
</select>

Beim submit wir dann folgender JavaScript Code aufgerufen:

<script Language="JavaScript">
!--
function Form1_Validator(theForm)
{
if (theForm.Name.value == "")
{
alert("Geben Sie einen Wert in das Feld \"Name\" ein.");
theForm.Name.focus();
return (false);
}
return (true);
}
//-->
</script>

Aber wie muss der Quelltext aussehen für die Überprüfung, ob eine Unterkunft gewählt wurde?
Ich kriegs einfach nicht auf die Reihe @ Datic
 
Hi,

warum versuchst Du, das "select"-Element als Array anzulegen? Die gewählte Option lässt sich prima über die value-Eigenschaft auslesen:
PHP:
<script Language="JavaScript">
function checkvals(theForm) {
    alert(theForm.Unterkunft.value);
}
</script>

<body>
<form action="" method="get">
<select size="4" name="Unterkunft" multiple>
<option value="Ferienhaus">Ferienhaus</option>
<option value="Ferienwohnung">Ferienwohnung</option>
<option value="Gästehaus">Gästehaus</option>
<option value="Hotel">Hotel</option>
<option value="Hotelappartement">Hotelappartement</option>
<option value="Pension">Pension</option>
<option value="Privatunterkunft">Privatunterkunft</option>
</select>
<input name="testbut" type="button" id="testbut" value="Testen" onClick="checkvals(this.form)">
</form>
</body>

Gruß
 
weil ich im anschluss an eine positive Überprüfung die Daten an ein PHP Script sende und dort alle gewählten Unterkünfte angezeigt bekommen will, jedoch nur das letzte angezeigt wird, wenn ich Unterkunft im HTML Code nicht zum Array mache, ...
 
Jetzt ist der Groschen (hoffentlich) gefallen :)

Versuch es einmal so:
PHP:
function checkvals(theForm) {
    for (i=0; i<theForm.Unterkunft.options.length; i++) {
		alert(theForm.Unterkunft.options[i].selected);
	}
}
Ob und wie die Definition des select-Elementes als Array funktioniert, weiß ich nicht, aber Du könntest die markierten Elemente in einem HiddenControl speichern (z.B. als String).
Gruß
 
Zuletzt bearbeitet:
Hab ich probiert, hat aber leider nicht funktioniert, ...

Ich hab das dumme Gefühl, er erkennt Unterkunft irgendwie nicht, ...

Nur weiß ich immer noch nicht warum, sollte es daran liegen, das Unterkunft ein Array ist?
 
ICH HAB'S!

So muss der JavaScript Code aussehen, damit es funktioniert, wie es soll:

if (theForm['Unterkunft[]'].value == "")
{
alert("Wählen Sie mindestens 1 der \"Unterkunft \"-Optionen.");
theForm['Unterkunft[]'].focus();
return (false);
}

Trotzdem nochmals Danke @ Datic

redlama
 
:) Ok, aber bei mir hat meine Version auch funktioniert, wenn ich "Unterkunft" im HTML-Code nicht als Array definiert habe.

Gruß
 
Original geschrieben von Datic
:) Ok, aber bei mir hat meine Version auch funktioniert, wenn ich "Unterkunft" im HTML-Code nicht als Array definiert habe.

Gruß

:) Ja, in dem Fall hat es bei mir auch funktioniert, ... ;)

redlama :suspekt:
 
Zurück