Automatisch Checkboxen markieren?
Tim
- javascript
0 Jean
Hallo zusammen!
Mein Problem:
Ich habe eine riesige Liste, vor jedem Eintrag steht eine Checkbox, mit
dem ich den jeweiligen Eintrag zur weiteren Verarbeitung markiere.
Jetzt ist es aber so, dass ich 20 - 30 oder mehr direkt aufeinanderfolgende
Einträge markieren möchte. Jede Checkbox davor einzeln anzuklicken ist
irgendwie stupide. Was ich mir deshalb dachte, wäre, dass ich eine
Box anklicke, eine weitere 30 Einträge weiter anklicke. Über Halten
einer definierten Taste währenddessen sollten sich diejenigen
Checkboxen zwischen diesen beiden bereits markierten "automatisch" selbst
markieren.
Details: Jede Checkbox in dem Dokument hat als Namen eine aufeinander-
folgende Nummer.
Was ich mir bisher schon überlegt habe: Beim Klicken einer Checkbox
wird ihre Nummer an eine JS-Funktion übergeben, also so:
<code>
...
<form name="Testform" action="irgendein_script.pl" method="post">
<table >
<tr>
<td><input type="Checkbox" name="1" onclick="test(1)"></td>
</tr>
</table>
</form>
...
</code>
Währenddessen drücke ich eine Taste, ob diese Taste gedrückt wird, muss
natürlich auch von JS abgefragt werden. Hier mein bisheriger JS-Code, der
aber an einem entscheidenden Punkt nicht funktioniert (ist bisher auch nur
auf Netscape angepasst - und das leidlich ;-):
<code>
<!--
window.captureEvents(Event.KEYPRESS);
window.onkeypress = Ausgabe; // auf irgendeinen Tastendruck hin wird
//Funktion Ausgabe aufgerufen
function Ausgabe(Ereignis){
Taste=Ereignis.which; //gedrückte Taste wird ermittelt
return Taste; //und returned (ob das so richtig ist
} //glaub ich selber nicht, geht aber komischerweise)
function test(name){ //Funktion wird mit dem Namen der Checkbox aufgerufen
if (Taste == 109){ //109 ist "m"
start=name;
}
else{
ende=name;
}
for(var i = start; i <= ende; i++){
document.Testform.i.checked == true;
}
}
//-->
</code>
Was der Code eigentlich sollte: Wenn ich "m" drücke und dabei eine Checkbox
anklicke, erhält die Variable "start" als Wert den Namen/die Nummer der
ersten Checkbox, die ich geklickt habe. Wenn ich die nächste klicke, halte ich "m" nicht mehr,
sondern irgendeine andere Taste. Dadurch bekommt die Variable "ende" den
Namen / die Nummer der letzten Checkbox.
Über die for-Schleife sollten alle Checkboxen zwischen der ersten gewählten
und der letzten gewählten automatisch markiert werden.
Was nicht geht: Wenn ich "m" drücke, wird natürlich "start" ein Wert
zugewiesen. Durch die Konstruktion des Javascripts wird aber die for-
schleife sofort danach aufgerufen, obwohl "ende" noch undefined ist.
Folge ist Fehlermeldung.
Bin ich bei der Lösung des Problems auf dem richtigen Weg? Oder ganz auf
dem Holzweg? Gibt es vielleicht eine viel umständlichere Lösung?
Bin für jede Hilfestellung dankbar!
Gruß,
Tim
P.S.: Ich weiß, dass ich keine einzige Variable deklariert habe, mach ich noch...
Gibt es vielleicht eine viel umständlichere Lösung?
Für eine umständlichere Lösung wäre ich dein Mann,
aber ich vermute du suchst das Gegenteil, oder ;-)?
Jean