Avatar billede vraa Nybegynder
07. juni 2004 - 20:41 Der er 1 kommentar og
2 løsninger

Udvide option/list menu

Jeg har en tekstboks, to knapper og en option/list menu. Ved at klikke på den første knap skal det indtastede i tekstboksen tilføjes til list menuen og ved at markere et punkt i list menuen for dernæst at klikke på knap nr. 2 skal det pågældende punkt fjernes.

Er der nogen ligger inde med et godt eksempler?
Avatar billede o-zone Nybegynder
07. juni 2004 - 21:01 #1
Jeg ligger ikke inde med noget, men jeg har smækket det her sammen til dig.
Umiddelbart synes jeg at det burde virke... men der er vist et eller andet galt med splice delen ... jeg prøver lige at fejlrette lidt (men ville ikke risikere at en eller anden snuppede al credits inden jeg fik svaret noget :-/ )
---8<----------
<body>
<script language="javascript" type="text/javascript">
    function tilfoj(str,liste){
        liste.options[liste.options.length] = new Option(str);
    }
   
    function fjern(liste){
        if (liste.selectedIndex==0){ return false; }
        liste.options.splice(liste.selectedIndex,1);
        return true;
    }
   
</script>
<form>
<input type="text" name="nyOption" size=30>
<select name="optionList">
    <option>tilføj element</option>
</select><br>
<input type="button" value="tilføj" onclick="tilfoj(this.form.elements['nyOption'].value,this.form.elements['optionList']); return true;">
<input type="button" value="fjern" onclick="return fjern(this.form.elements['optionList']);">
</form>

</body>
Avatar billede o-zone Nybegynder
07. juni 2004 - 21:26 #2
hmmm... jeg kan sku ikke lige finde ud af hvorfor select.options arrayet bliver vred over en splice, men her er en lidt hårdere måde at gøre det på:
---8<----------
<body>
<script language="javascript" type="text/javascript">
    function tilfoj(str,liste){
        liste.options[liste.options.length] = new Option(str);
        document.forms[0].elements["nyOption"].value="";
        document.forms[0].elements["nyOption"].focus();
    }
   
    function fjern(liste){
        if (liste.selectedIndex==0){ return false; }
        liste.options[liste.selectedIndex]=null;
        liste.selectedIndex=0;
        return true;
    }
   
</script>
<form>
<input type="text" name="nyOption" size=30>
<select name="optionList">
    <option>tilføj element</option>
</select><br>
<input type="button" value="tilføj" onclick="tilfoj(this.form.elements['nyOption'].value,this.form.elements['optionList']); return true;">
<input type="button" value="fjern" onclick="return fjern(this.form.elements['optionList']);">
</form>

</body>
Avatar billede vraa Nybegynder
07. juni 2004 - 21:51 #3
Lavede denne funktion:
function addRemoveOption(knap, postNr){
    if (postNr != '' && knap == 'tilfoej'){
        var objSelect = document.getElementById( "listOmr" );
        var objOption = new Option( postNr, -1 );
        objSelect.add( objOption );
    }
    else if (knap == 'fjern'){
        document.xx.listOmr.options.remove(document.xx.listOmr.selectedIndex);
    }
}

<input name="tilfOmrKnap" id="tilfoej" type="button" class="inputKnap" value="Tilf&oslash;j omr&aring;de -&gt;" onClick="addRemoveOption(this.id, document.xx.omr.value);">

<input name="tilfOmrKnap" id="fjern" type="button" class="inputKnap" value="&lt;- Fjern omr&aring;de" onClick="addRemoveOption(this.id, document.xx.omr.value);">

...men vi deler pointene som tak hjælpen
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