Ver Mensaje Individual
  #1 (permalink)  
Antiguo 04/05/2006, 01:42
aruizroldan
 
Fecha de Ingreso: octubre-2003
Mensajes: 280
Antigüedad: 23 años
Puntos: 1
Intercambio de valores entre select

Hola a todos. Me bajé el siguiente código en javascript:

Código PHP:
var singleSelect = true;  // Allows an item to be selected once only
var sortSelect = true;  // Only effective if above flag set to true
var sortPick = true;  // Will order the picklist in sort sequence

// Initialise - invoked on load
function initIt() {
  var 
selectList = document.getElementById("SelectList");
  var 
selectOptions = selectList.options;
  var 
selectIndex = selectList.selectedIndex;
  var 
pickList = document.getElementById("PickList");
  var 
pickOptions = pickList.options;
  
pickOptions[0] = null;  // Remove initial entry from picklist (was only used to set default width)
  
if (!(selectIndex > -1)) {
    
selectOptions[0].selected = true;  // Set first selected on load
    
selectOptions[0].defaultSelected = true;  // In case of reset/reload
  
}
  
selectList.focus();  // Set focus on the selectlist
}

// Adds a selected item into the picklist
function addIt() {
  var 
selectList = document.getElementById("SelectList");
  var 
selectIndex = selectList.selectedIndex;
  var 
selectOptions = selectList.options;
  var 
pickList = document.getElementById("PickList");
  var 
pickOptions = pickList.options;
  var 
pickOLength = pickOptions.length;
  
// An item must be selected
  
while (selectIndex > -1) {
    
pickOptions[pickOLength] = new Option(selectList[selectIndex].text);
    
pickOptions[pickOLength].value = selectList[selectIndex].value;
    
// If single selection, remove the item from the select list
    
if (singleSelect) {
      
selectOptions[selectIndex] = null;
       
    }
    if (
sortPick) {
      var 
tempText;
      var 
tempValue;
      
// Sort the pick list
      
while (pickOLength > 0 && pickOptions[pickOLength].value < pickOptions[pickOLength-1].value) {
        
tempText = pickOptions[pickOLength-1].text;
        
tempValue = pickOptions[pickOLength-1].value;
        
pickOptions[pickOLength-1].text = pickOptions[pickOLength].text;
        
pickOptions[pickOLength-1].value = pickOptions[pickOLength].value;
        
pickOptions[pickOLength].text = tempText;
        
pickOptions[pickOLength].value = tempValue;
        
pickOLength = pickOLength - 1;
      }
    }
    
selectIndex = selectList.selectedIndex;
    
pickOLength = pickOptions.length;
  }
  
selectOptions[0].selected = true;
}

// Deletes an item from the picklist
function delIt() {
  var 
selectList = document.getElementById("SelectList");
  var 
selectOptions = selectList.options;
  var 
selectOLength = selectOptions.length;
  var 
pickList = document.getElementById("PickList");
  var 
pickIndex = pickList.selectedIndex;
  var 
pickOptions = pickList.options;
  while (
pickIndex > -1) {
    
// If single selection, replace the item in the select list
    
if (singleSelect) {
      
selectOptions[selectOLength] = new Option(pickList[pickIndex].text);
      
selectOptions[selectOLength].value = pickList[pickIndex].value;
    }
    
pickOptions[pickIndex] = null;
    if (
singleSelect && sortSelect) {
      var 
tempText;
      var 
tempValue;
      
// Re-sort the select list
      /*while (selectOLength > 0 && selectOptions[selectOLength].value < selectOptions[selectOLength-1].value) {
        tempText = selectOptions[selectOLength-1].text;
        tempValue = selectOptions[selectOLength-1].value;
        selectOptions[selectOLength-1].text = selectOptions[selectOLength].text;
        selectOptions[selectOLength-1].value = selectOptions[selectOLength].value;
        selectOptions[selectOLength].text = tempText;
        selectOptions[selectOLength].value = tempValue;
        selectOLength = selectOLength - 1;
      }*/
    
}
    
pickIndex = pickList.selectedIndex;
    
selectOLength = selectOptions.length;
  }
}

// Selection - invoked on submit
function selIt(btn) {
  var 
pickList = document.getElementById("PickList");
  var 
pickOptions = pickList.options;
  var 
pickOLength = pickOptions.length;
  if (
pickOLength < 1) {
    
alert("No ha seleccionado ningún elemento.");
    return 
false;
  }
  for (var 
i = 0; i < pickOLength; i++) {
    
pickOptions[i].selected = true;
  }
  return 
true;
} 
Bien. lo que hace es pasar los valores de SelectList a PickList, pero eliminando los del primero según se vayan pasando. Bien, me gustaria q se pasaran pero sin que se eliminara, es decir, que se pueda añadir en picklist varias veces el mismo elemento. ¿Que cambias habría que hacer? He mirado el código y cambiado las cosas pero no funciona.

Gracias.