Joachim: eine Checkbox immer aktiviert

Beitrag lesen

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.