Sehr schön, sehr schön! Danke für die Denkstütze.
Ich kam leider erst heute dazu, mich weiter mit diesem Problem zu beschäftigen.
Ich hab den Scriptteil wie folgt geändert:
HTML-Code:
<script type="text/javascript">
function AllMessages()
{
for(var x=0; x<parent.ziel_frame.document.ziel_form.elements.length; x++)
{
var y= parent.ziel_frame.document.ziel_form.elements[x];
if(y.name!='ALLMSGS') y.checked=document.aufruf_form.ALLMSGS.checked;
}
}
</script>
Also wichtig sind somit die Unterschiede zw. der letzten Scriptzeile (Klammern ausgenommen) und den anderen. Denn dort wird abgefragt, ob ich das Häkchen setze.
Nun klappt die Übergabe an den Zielframe wunderbar.
ABER
Irgendwie muss ich dem aufrufenden Form noch zurückgeben, welche Werte hinter den markierten Checkboxen des Ziel-Formulars liegen.
Denn das aufrufende Formular möchte ich ja dann auch absenden.
Zwar kann ich alle Werte zurück übergeben, die durch "Alle Auswählen" gewählt wurden.
Doch werden Felder nicht berücksichtigt, deren Häkchen ich per Hand entfernt habe.
Vielleicht hast du oder die anderen Kollegen eine Lösung.
Danke schonmal bis hierhin.
EDIT
Also mein Script sieht dann so aus
HTML-Code:
<script type="text/javascript">
function AllMessages()
{
// Werte-String, soll beim Durchlauf die Werte der angeklickten Felder aufnehmen
var werte = '';
// Schleife zum Druchlauf jeden Elements des ZielFormulars
for(var x=0; x<parent.ziel_frame.document.ziel_form.elements.length; x++)
{
// für jeden Durchlauf das aktuelle Element an y übergeben
var y= parent.ziel_frame.document.ziel_form.elements[x];
// Alle Elemente, die nicht ALLMSGS (name der Alle-Checkbox) heißen den wert von diesem übernehmen (checked oder eben nich)
if(y.name!='ALLMSGS') y.checked=document.aufruf_form.ALLMSGS.checked;
// wenn das Element angeklickt wurde, den Wert zurückgeben
if (y.checked) werte = werte + ',' + y.value; //TEST
}
document.aufruf_form.checked_files.value = werte;
}
</script>
Die Werte aus den durch 'Alle Auswählen' markierten Checkboxen werden zurück übergeben und in den String
Werte
geschrieben.
Dieses wird dann dem im Aufruf-Formular befindlichen Element
checked_files
,welches ein Hidden-Field darstellt, übergeben.
Nun muss ich aber immernoch die Werte aus diesem String rausschmeißen, aus deren Checkbox ich das Häkchen wieder entfernt habe.
Dazu müßte ich doch irgendwie dieses Skript im Frame des Aufruf-Formulars ansprechen. Nur wie?
onClick = "???????AllMessages(???)
EDIT - LÖSUNG:
Habs folgendermaßen hinbekommen
HTML-Code:
<script type="text/javascript">
// Wenn Send gesetzt ist, sollen nicht alle Häkchen gesetzt werden
// Erst wenn Send gesetzt ist, sollen die Werte übergeben werden
function AllMessages(send)
{
// Werte-String, soll beim Durchlauf die Werte der angeklickten Felder aufnehmen
var werte = '';
// Schleife zum Druchlauf jeden Elements des ZielFormulars
for(var x=0; x<parent.ziel_frame.document.ziel_form.elements.length; x++)
{
// für jeden Durchlauf das aktuelle Element an y übergeben
var y= parent.ziel_frame.document.ziel_form.elements[x];
// Alle Elemente, die nicht ALLMSGS (name der Alle-Checkbox) heißen den wert von diesem übernehmen (checked oder eben nich)
if(y.name!='ALLMSGS' && send != 1) y.checked=document.aufruf_form.ALLMSGS.checked;
// wenn das Element angeklickt wurde, den Wert zurückgeben
if (send == 1)
{
if (y.checked) {werte = werte + ',' + y.value; }//TEST
}
}
if (send == 1) document.aufruf_form.hidden_feld_xy.value = werte;
}
</script>
Ich habe dann im Aufruf-Formular wie gehabt die Checkbox, durch die im Zielform/Zielframe alle Checkboxen markiert werden.
HTML-Code:
<form action="wasauchimmer.php" method="post" name="aufruf_form" target="ziel_frame">
<input type="checkbox" id="ALLMSGS" name="ALLMSGS" value="ALLMSGS" onclick="AllMessages();"/>
<label for="ALLMSGS">Alle wählen</label>
<select name="egal">
<option>löschen</option>
<option>verschieben</option>
<option>was auch immer</option>
</select>
<input type="hidden" name="hidden_feld_xy" />
<input type="image" src="../images/buttons/go.gif" onclick="AllMessages(1);" />
</form>
Wenn AllMessages mit (1) aufgerufen wird, werden die Werte übergeben. Zack, fertig.
Hatte noch nie viel mit JS zu tun, aber langsam komm ich auf den Geschmack. ;-)