Avatar billede jara06 Nybegynder
01. september 2005 - 15:43 Der er 5 kommentarer og
1 løsning

JS select alle checkboxe

Hejsa

Jeg har brug for lidt assistance til et forholdsvis simpelt js jeg skal bruge ved en userlisting.
Ret simpelt: en userliste med en række checkboxe og radiobuttons, og nogle actions til hver af disse rækker:
checkboxe = check all, uncheck all, invert selection, selectbox med slet, aktiver, etc.
radios = uncheck (all), edit

Problemet ligger lidt i jeg er nødt til at bruge checkboxene som array for at kunne bruge alle værdierne i _POST array i php v sumbit.

Alt kritik er velkommen :)


<script type="text/javascript">
   
    function formRedirect2Edit(radioArray) {
        if (radioArray == null)
            return false;
       
        var checkedID = 0;
        for (var i = 0; i < radioArray.length; i++) {
            if (radioArray[i].checked == true) {
                checkedID = radioArray[i].value;
            }
        }
       
        if (checkedID != 0)
            document.location.href = ('./user_edit.php?id=' + checkedID);
        else
            alert ('Ugyldigt valg');
    }
   
   
    function setCheckboxes(radioArray, state) {
        alert('debug:' + radioArray);
        if (radioArray == null)
            return false;
       
        if ((state != true) && (state != false) && (state != 'invert'))
            state = false;
       
        for(var i = 0; i < radioArray.length; i++) {
            if (state == 'invert')
                radioArray[i].checked ? radioArray[i].checked = false : radioArray[i].checked = true;
            else
                radioArray[i].checked = state;
        }
    }
   
   
    function formChangeAction(selectbox)
    {
        var el = document.getElementById('userList');
       
        SelectedIndex = selectbox.selectedIndex;
        if (selectbox.options[SelectedIndex].value != 'none') {
            alert('sender til:' + selectbox.options[SelectedIndex].value);
            el.action = selectbox.options[SelectedIndex].value;
           
            el.submit();
        }
        return;
    }
   
</script>

<form name="userList" id="userList" enctype="application/x-www-form-urlencoded" action="fisk.php" method="post">
<table>
    <tr>
        <td><input type="radio" name="useredit" value="1" /></td>
        <td><input type="checkbox" name="usercustom[]" value="1" /></td>
        <td>bruger1</td>
    </tr>
    <tr>
        <td><input type="radio" name="useredit" value="2" /></td>
        <td><input type="checkbox" name="usercustom[]" value="2" /></td>
        <td>bruger2</td>
    </tr>
    <tr>
        <td><input type="radio" name="useredit" value="3" /></td>
        <td><input type="checkbox" name="usercustom[]" value="3" /></td>
        <td>bruger3</td>
    </tr>
    <tr>
        <td style="border-left: 1px solid black;">&nbsp;</td>
        <td colspan="5" style="border-left: 1px solid black; border-bottom: 1px solid black;">
            &nbsp;
            <a href="#" onclick="java script:setCheckboxes(document.userList.usercustom, true); return false;">
                Check All
            </a>
           
            &nbsp; / &nbsp;
           
            <a href="#" onclick="java script:setCheckboxes(document.userList.usercustom, false); return false;">
                UnCheck All
            </a>
           
            &nbsp; / &nbsp;
           
            <a href="#" onclick="java script:setCheckboxes(document.userList.usercustom, 'invert'); return false;">
                Invert All
            </a>
           
            &nbsp; &nbsp; &nbsp;
           
            <select name="action" onchange="java script:formChangeAction(this);">
                <option value="none" selected="selected">With selected:</option>
                <option value="./activate.php">Aktiver</option>
                <option value="./deactivate.php">Deaktiver</option>
                <option value="./delete.php">Slet</option>
            </select>
        </td>
    </tr>
    <tr>
        <td colspan="5" style="border-left: 1px solid black; border-bottom: 1px solid black;">
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
           
            <a href="#" onclick="java script:formRedirect2Edit(document.userList.useredit); return false;">
                Edit
            </a>
                       
            &nbsp; / &nbsp;
           
            <a href="#" onclick="java script:setCheckboxes(document.userList.useredit, false); return false;">
                UnCheck
            </a>
           
        </td>
    </tr>
</table>
</form>
Avatar billede roenving Novice
01. september 2005 - 15:52 #1
<a href="#" onclick="java script:setCheckboxes(document.userList.elements['usercustom[]'], false); return false;">
Avatar billede roenving Novice
01. september 2005 - 15:53 #2
Hrm, jeg overså lige den fuldstændig overflødige og faktisk ulovlige java script:-ting i events:

<a href="#" onclick="setCheckboxes(document.userList.elements['usercustom[]'], false); return false;">
Avatar billede jara06 Nybegynder
01. september 2005 - 17:53 #3
super, thx.! smid svar. :)

btw, ved ikke om det er direkte 'ulovligt' i denne sammenhæng, men har altid brugt "java script:" på denne måde, uden problemer.

Tror det er sådan det 'bør' bruges:
<a href="java script:func();"></a>
<a href="#" onclick="func();"></a>
Avatar billede roenving Novice
01. september 2005 - 23:42 #4
Lige præcis !-)

-- og ofte er det fornuftigt at tilføje en return false; på links, så man undgår den naturlige funktion på et link, men det er jo så ikke lige problemet her, den er jo med i forvejen !o]

-- els velbekomme '-)
Avatar billede roenving Novice
03. september 2005 - 00:58 #5
-- og tak for point ;~}
Avatar billede jara06 Nybegynder
03. september 2005 - 02:11 #6
de er velfortjent. :)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester