Avatar billede deamill Nybegynder
23. marts 2004 - 14:12 Der er 8 kommentarer og
1 løsning

Kopiering af selectbox?!

Hey,

Jeg har en selectbox a og b. Selectbox a indeholder nogle options, selectbox b er tom.

Hvordan gør jeg sådan, at når jeg klikker på dropdown på selectbox b, så kopieres options'ene fra selectbox a over i selectbox b?

P.S. Løsningen skal helst være vha. JScript eller evt. VBScript!

/deamill
Avatar billede nute Nybegynder
23. marts 2004 - 14:59 #1
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">

<html>
<head>
    <title>Untitled</title>
    <script language="JavaScript" type="text/javascript">
    <!--
    function swapOptions( strFrom, strTo )
    {
        var objFrom = document.getElementById( strFrom );
        var objTo = document.getElementById( strTo );
       
        for( i = 0; i < objFrom.options.length; i++ )
        {
            if( objFrom.options[ i ].selected )
            {
                var objOption = document.createElement( "option" );
                objTo.appendChild( objOption );
                objOption.value = objFrom.options[ i ].value;
                objOption.text = objFrom.options[ i ].text;
                objOption.selected = false;
                objFrom.options[ i ] = null;
            }
        }
    }
    //-->
    </script>
</head>

<body>
<form id="frm" onsubmit="return submitForm( this )">
<table>
    <tr>
        <td>
            <select id="sel1" size="5" multiple="multiple">
                <option value="1">Option 1</option>
                <option value="2">Option 2</option>
                <option value="3">Option 3</option>
                <option value="4">Option 4</option>
                <option value="5">Option 5</option>
            </select>
        </td>
        <td>
            <input type="button" value=" >> " onclick="swapOptions( 'sel1', 'sel2' );"><br>
            <input type="button" value=" << " onclick="swapOptions( 'sel2', 'sel1' );">
        </td>
        <td>
            <select id="sel2" size="5" multiple="multiple" style="width:75px;"/>
        </td>
    </tr>
</table>
</form>
</body>
</html>
Avatar billede nute Nybegynder
23. marts 2004 - 15:05 #2
ups ... der manglede lige en

i--;

under denne linie:

objFrom.options[ i ] = null;

            if( objFrom.options[ i ].selected )
            {
                var objOption = document.createElement( "option" );
                objTo.appendChild( objOption );
                objOption.value = objFrom.options[ i ].value;
                objOption.text = objFrom.options[ i ].text;
                objOption.selected = false;
                objFrom.options[ i ] = null;
                i--;
            }
Avatar billede roenving Novice
23. marts 2004 - 15:11 #3
<script language="javascript" type="text/javascript">
function cloneOptions(elm,id){
  var sel = document.getElementById(id),newOpt;
  elm.style.width = sel.offsetWidth + 'px';
  for(i=0;sel.length>i;i++){
    opt = sel.options[i];
    newOpt = document.createElement('OPTION');
    elm.appendChild(newOpt);
    newOpt.value = opt.value;
    newOpt.text = opt.text;
    newOpt.selected = opt.selected;   
  }
}
</script>
<select name="a" id="a" onchange="">
    <option value="">-- Vælg her --<br>
    <option value="1">1<br>
    <option value="2">2<br>
    <option value="3">3<br>
</select>
<br>
<br>
<select name="b" id="b" onclick="if(this.length==0)cloneOptions(this,'a');">
</select>
Avatar billede deamill Nybegynder
24. marts 2004 - 08:40 #4
Hey, tak for svarene, jeg kan først få afprøvet om det virker på fredag :-)
Avatar billede deamill Nybegynder
26. marts 2004 - 09:32 #5
roenving ->

Det virker :-)

Du skal lige svare!

Et lille tillægs spørgsmål. I stedet for at kalde functionen "onclick", kan man så kalde den "oncreate"?

/deamill
Avatar billede roenving Novice
26. marts 2004 - 13:11 #6
Næh, men du kan da gøre det onload på dokumentet, og så skal vi lige lave en anelse om på funktionen:

<script language="javascript" type="text/javascript">
function cloneOptions(til,fra){
  var sel = document.getElementById(fra),newOpt;
  var elm = document.getElementById(til);
  elm.style.width = sel.offsetWidth + 'px';
  for(i=0;sel.length>i;i++){
    opt = sel.options[i];
    newOpt = document.createElement('OPTION');
    elm.appendChild(newOpt);
    newOpt.value = opt.value;
    newOpt.text = opt.text;
    newOpt.selected = opt.selected;   
  }
}

</script>

<select name="a" id="a" onchange="">
    <option value="">-- Vælg her --<br>
    <option value="1">1<br>
    <option value="2">2<br>
    <option value="3">3<br>
</select>
<br>
<br>
<select name="b" id="b">
</select>

-- og så skal vi kalde den onload:

<body onload="cloneOptions('b','a');">

-- og body skal selvfølgelig ind der hvor den skal ind ...

-- og velbekomme '-)
Avatar billede roenving Novice
31. marts 2004 - 07:23 #7
-- og tak for points ;~}
Avatar billede deamill Nybegynder
31. marts 2004 - 07:29 #8
hejsa, det er fordi jeg bruger den clone du lavede til mig, til at indsætte elementer i mine selectboxe. Men jeg vil gerne have at de automatisk bliver indsat når selectboxen bliver lavet. Som der er nu, bliver elementerne jo først insat "onclick"!

Forstår du hvad jeg mener?
Avatar billede deamill Nybegynder
31. marts 2004 - 07:31 #9
doh.. det skulle ikke stå der, glem det jeg lige har skrevet ;-)
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