Ver Mensaje Individual
  #1 (permalink)  
Antiguo 04/05/2006, 01:42
aruizroldan
 
Fecha de Ingreso: octubre-2003
Mensajes: 280
Antigüedad: 21 años, 4 meses
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 && 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 
0pickOLengthi++) {
    
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.