Avatar billede rix Novice
24. juli 2011 - 19:31 Der er 7 kommentarer og
1 løsning

vægle mellem to lister

Hey
jeg har fundet denne stump kode
http://www.html.dk/scripts/javascript/00006/

men kan bare ikke få den til at virke når jeg sender det man har vagt til en side med php sender den kun 1 af de ting man har valgt :( nogen der kan se hvorfor?
Avatar billede olsensweb.dk Ekspert
24. juli 2011 - 21:13 #1
som jeg umildbart ser det skal select1 select2 være array dvs select1[] select2[], men det medfører du skal re-programmerer alle js functionerne :-(
mulig inspiration i http://www.eksperten.dk/spm/936307 #2 og #3
Avatar billede olsensweb.dk Ekspert
24. juli 2011 - 23:44 #2
ville lige prøve min umildbare ide, og det virkede med en mindre omskrivning, komplet code:
<!DOCTYPE html>
<html>
<head>
    <meta http-equiv="content-type" content="text/html; charset=utf-8"/>
    <title></title>
    <style type="text/css">
    </style>
    <script type="text/javascript">
    //<![CDATA[
    function deleteOption(obj,index) {
        var object = document.getElementById(obj);
        object.options[index] = null;
    }
    function addOption(obj,text,value) {
        var object = document.getElementById(obj);
        var defaultSelected = true;
        var selected = true;
        var optionName = new Option(text, value, defaultSelected, selected)
        object.options[object.length] = optionName;
    }
    function copySelected(fromObject,toObject) {
        var From = document.getElementById(fromObject);
        var To = document.getElementById(toObject);
        var FromLng = From.length;
        for(var i=0, l=FromLng;i<l;i++){
            if (From[i].selected) {           
                addOption(toObject,From.options[i].text,From.options[i].value);
            }
        }
        for (var i=FromLng-1;i>-1;i--) {
            if (From[i].selected){                
                deleteOption(fromObject,i);
            }
        }
    }
    function SelectAll(fromObject) {
        var From = document.getElementById(fromObject);
        for(var i=0, l=From.length;i<l;i++){
            From.options[i].selected = true;   
        }   
    }
    //]]>
    </script>
</head>
<body>
<form name ="frm" method="post" action="req.php">
<table>
<tr>
<td>Mine livretter<br>
<select multiple="multiple" name="select1[]" id="select1[]" size='8' style="width:200px">
<option value='1'>Indisk curry</option>
<option value='2'>Pasta med pesto</option>
<option value='3'>Humus</option>
</select>
</td>
<td>
<input type='button' style="width:70px;" value='< Tilføj' 
    onclick="copySelected('select2[]','select1[]')">
<br>
<input type='button' style="width:70px;" value='Fjern  >' 
    onclick="copySelected('select1[]','select2[]')">
</td>
<td>Tilgængelige retter<br>
<select multiple="multiple" name="select2[]" id="select2[]" size='8' style="width:200px">
<option value='4'>Pasta med ketchup</option>
<option value='5'>Lasagne</option>
<option value='6'>Big mac</option>
<option value='7'>Whopper med cheese</option>
<option value='8'>Pizza</option>
<option value='9'>Shawarma</option>
</select>
</td>
</tr>
</table>
<p><input type="button" value="Send data" onclick="SelectAll('select1[]'); submit();">
</form>
</body>
</html>

demo http://olsensweb.dk/test/experten/spm/943671/

nb: vær kritisk når du anvender code fra html.dk (sidst opdateret 2001)
Avatar billede olebole Juniormester
24. juli 2011 - 23:45 #3
<ole>

Du kunne lave noget i stil med:


<script type="text/javascript">
function copySelected(sFromObject,sToObject) {
    var fromOpts = document.getElementById(sFromObject).getElementsByTagName("option"),
    toObject = document.getElementById(sToObject);
    for (var i=fromOpts.length-1;i>=0;i--) {
        if (fromOpts[i].selected) {
            toObject.appendChild(fromOpts[i]);
        }
    }
}

function selectAll(sSelectObject) {
    var selectOpts = document.getElementById(sSelectObject).getElementsByTagName("option");
    for (var i=0, l=selectOpts.length;i<l;i++) {
        selectOpts[i].selected = true;
    }
}
</script>

<form method="post" action="" onsubmit="selectAll('select1')">
<table>
<tr>
<td>Mine livretter<br>
<select multiple id="select1"  name="select1[]" size='8' style="width:200px">
<option value='1'>Indisk curry</option>
<option value='2'>Pasta med pesto</option>
<option value='3'>Humus</option>
</select>
</td>

<td>
<input type='button' style="width:70px;" value='< Tilføj'
  onClick="copySelected('select2','select1')">
<br>
<input type='button' style="width:70px;" value='Fjern  >'
  onClick="copySelected('select1','select2')">
</td>

<td>Tilgængelige retter<br>
<select multiple id="select2"  name="select2[]" size='8' style="width:200px">
<option value='4'>Pasta med ketchup</option>
<option value='5'>Lasagne</option>
<option value='6'>Big mac</option>
<option value='7'>Whopper med cheese</option>
<option value='8'>Pizza</option>
<option value='9'>Shawarma</option>
</select>
</td>

</tr>
</table>
<p><input type="submit" value="Send data"></p>
</form>



/mvh
</bole>
Avatar billede olebole Juniormester
24. juli 2011 - 23:51 #4
ronolds >> Man kan faktisk godt tilgå SELECT elementet med JavaScript og DOM Level1, hvis man bruger array notation:

this.form['select1[]']
Avatar billede olebole Juniormester
24. juli 2011 - 23:54 #5
- men det er lidt mere 'sexy' at udnytte, at et allerede bestående element, der appendes til et andet, automatisk fjernes fra dets oprindelige parent  =)
Avatar billede rix Novice
25. juli 2011 - 00:52 #6
hmm denne bliver sværd i har helt sikkert kommet med forslag der virker men valgte olebole fordi den så enkelt ud.
men hvem skal have point?
ved ikke om i ville dele
og mange tak for hjælpe
Avatar billede olebole Juniormester
25. juli 2011 - 01:01 #7
Selvtak. Jeg samler ikke points, så det må være ronols'. Men tak for tilbudet  =)
Avatar billede olsensweb.dk Ekspert
25. juli 2011 - 11:34 #8
selvtak, så får du et svar her
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