Hi,
Aber wenn die Checkboxen entcheckt werden, soll die letzte Checkbox immer aktiviert bleiben.
anbei ein kleines Testscript zur Anschauung. Sowas löst man normalerweise mit einer Schleife, die über alle fraglichen Checkboxen läuft und prüft, ob wenigstens eine markiert ist. Der Einfachheit halber verwende ich die gleichen Namen mit abschliessenden Klammern [], das erleichtert mir die Handhabung, aber dennoch kommen alle Werte (als Array) im verarbeitenden Script an:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/1999/REC-html401-19991224/loose.dtd">
<html>
<head>
<script type="text/javascript">
function check(nam) {
var i, item, ck = document.testform.elements[nam]; // collection aller checkbocen
var checked_item = false; // flag, speichert ob gechecked
// alle checkboxen durchloopen
// wenn suche erfolgreich flag setzen und abbrechen
for(i = 0; item = ck[i]; i++) {
if(item.checked) {
checked_item = true;
break;
}
}
// wenn flag nicht gesetzt letzte chechbox markieren
if(!checked_item) {
ck[ck.length-1].checked = true;
}
}
</script>
<style type="text/css">
ul, li {list-style:none}
</style>
</head>
<body>
<form name="testform" action="#">
<ul>
<!--
die Namensvergabe: 'name[]' (also mit []) erleichtert das Handling, denn alle checkboxen
können so den gleichen Namen haben, kommen im verarbeitenden Script aber als Werte-Array an.
-->
<li><input onclick="check('testck[]')" name="testck[]" type="checkbox" value="1" /> 1</li>
<li><input onclick="check('testck[]')" name="testck[]" type="checkbox" value="2" /> 2</li>
<li><input onclick="check('testck[]')" name="testck[]" type="checkbox" value="3" /> 3</li>
<li><input onclick="check('testck[]')" name="testck[]" type="checkbox" value="4" /> 4</li>
<li><input onclick="check('testck[]')" name="testck[]" type="checkbox" value="5" /> 5</li>
</ul>
</form>
</body>
</html>
Gruesse, Joachim
Am Ende wird alles gut.