Visualizzazione dei risultati da 1 a 3 su 3
  1. #1
    Utente di HTML.it L'avatar di Gumble
    Registrato dal
    Jun 2004
    Messaggi
    1,313

    [js] popolare selectbox multipla da selezione selectbox

    ho una selectbox con 3 elementi:
    codice:
    <select name="diBase">
      <option value="1">pippo</option>
      <option value="2">pluto</option>
      <option value="3">paperino</option>
    </select>
    e ho una selectbox multipla con 0 o piu elementi
    codice:
    <select name="daRiempire" size="5">
      <option value="2">pluto</option>
    </select>
    devo fare in modo che quando l'utente seleziona una voce da "diBase" questa venga aggiunta a "daRiempire". Non importa se l'id non é in fila:

    cioé: voglio solo aggiungere l'elemento selezionato dopo l'ultimo elemento in "daRiempire".

    consigli?
    alcool: la causa e la soluzione di tutti i problemi

  2. #2
    Moderatore di JavaScript L'avatar di br1
    Registrato dal
    Jul 1999
    Messaggi
    19,998
    nelle sue linee "essenziali" potrebbe essere cosi':
    codice:
    <form>
    <select name="diBase"
    onchange="i=this.selectedIndex;o=this.options;this.form.daRiempire.options[this.form.daRiempire.options.length]=new Option(o[i].text,o[i].value)">
      <option value="1">pippo</option>
      <option value="2">pluto</option>
      <option value="3">paperino</option>
    </select>
    
    <select name="daRiempire" size="5">
      <option value="2">pluto</option>
    </select>
    </form>
    ovviamente hai gia' previsto nella progettazione della tua applicazione la nascita di problemi come... evitare doppioni, eliminare un elemento, ecc...

    ciao


    ciao
    Il guaio per i poveri computers e' che sono gli uomini a comandarli.

    Attenzione ai titoli delle discussioni: (ri)leggete il regolamento
    Consultate la discussione in rilievo: script / discussioni utili
    Usate la funzione di Ricerca del Forum

  3. #3
    Utente di HTML.it L'avatar di Gumble
    Registrato dal
    Jun 2004
    Messaggi
    1,313
    ri-ciao...
    ecco quello che sono riuscito a fare:
    codice:
    <script language="JavaScript">
    function fillMulti(caller, linked)
    {
      //Get the two selectboxes
      callerEl = document.getElementsByName(caller)[0];
      linkedEl = document.getElementsByName(linked)[0];
    
      //Get selected item
      i = callerEl.selectedIndex;
      o = callerEl.options;
    
      //Get text and values (because of strange problem!)
      cVal = o[i].value;
      cTxt = o[i].text
    
      //If the element is not in the multiselect, add it
      if (isInLinked(o[i].value, linkedEl) == false)
      {
        linkedEl.options[linkedEl.options.length]=new Option(cTxt,cVal);
      }
    }
    
    function fillMultiAll(caller, linked)
    {
      callerEl = document.getElementsByName(caller)[0];
      for(i=0;i<callerEl.options.length;i++)
      {
        alert(callerEl.options[i].value)
        if(arguments.length>2)
        {
          if (arguments[2] != callerEl.options[i].value)
          {
            callerEl.selectedIndex = i;
            fillMulti(caller, linked);
          }
        }
        else
        {
          callerEl.selectedIndex = i;
          fillMulti(caller, linked);
        }
      }
    }
    
    //Return true if a given id is already into the given select box (multi)
    function isInLinked(id, linked)
    {
      var ret = false;
    
      //If it is not in the linked box, add it
      for (i=0;i<linked.options.length;i++)
      {
        if (linked.options[i].value == id)
        {
          ret = true;
          break;
        }
      }
      return ret;
    }
    </script>
    in pratica la funzione che aggiunge l'elemento selezionato prende come argomenti il nome della selectbox e quello della multiple selectbox dove mettere gli elementi. questa funziona controlla se l'elemento non é gia dentro la selectbox di destinazione, e se é il caso non aggiunge l'elemento.

    la funzione fillMultiAll é richiamata da un checkbox. Questa funzione deve mettere tutti gli elementi da una selectbox nell'altra. Il problema é che quando questa funzione ha piu dei due argomenti dichiarati, significa che ce ne é un terzo (contenente un id per l'appunto). Questo id é da evitare, e quindi al momento in cui trova l'option con value=id non la mette...

    putroppo il tutto si crasha e lo script non risponde piu.

    ideee

    spero di essermi spiegato
    alcool: la causa e la soluzione di tutti i problemi

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.