Von Select zu Select

Sasser

Erfahrenes Mitglied
Hallo Leute!

Ich habe folgendes Script gefunden, welches eine markierte Option in einem Selectfeld in ein anderes überträgt und rückwärts.

HTML:
<script type="text/javascript">
function push(act) {
 var from = act == 'force' ? 'unforce' : 'force';
 var to = act == 'force' ? 'force' : 'unforce';
 var obj_from = document.getElementById(from);
 var obj_to = document.getElementById(to);
 for (i=0; i < obj_from.options.length; i++) {
  if (obj_from.options[i].selected == true) {
   newEntry = new Option(obj_from.options[i].text,obj_from.options[i].value,false,true);
   obj_to.options[obj_to.options.length] = newEntry;
   obj_from.options[i] = null;
   i--;
  }
 }
}
</script>

Das funktioniert auch wunderbar, aber kann man etwas einbauen, dass man auch alle auf einmal nach rechts übertragen kann? Eine Funktion vielleicht?

Ist es auch möglich, dass wenn man eine Option überträgt, dass dann automatisch das nächste markiert wird?

Danke für eure Hilfe!
 
Hi,

das erste kannst du lösen, indem du einen booleschen Wert übergibt. Ist dieser wahr (true), so werden alle Optionen verschoben.

Das zweite Feature kannst du realisieren, indem du für den Fall, dass der boolesche Wert false ist, die Schleife bei einem Treffer verlässt. Nach der Schleife wird der Index i ausgewertet und - falls vorhanden - der nachfolgende Wert selektiert. Das funktioniert allerdings nur, wenn lediglich ein einzelner Wert markiert wird.

Beispiel:
Code:
<head>
<title>www.tutorials.de</title>
<meta name="author" content="Quaese">
<script type="text/javascript">
  <!--
function push(act, blnAll) {
  var from = act == 'force' ? 'unforce' : 'force';
  var to = act == 'force' ? 'force' : 'unforce';
  var obj_from = document.getElementById(from);
  var obj_to = document.getElementById(to);

  for (i=0; i < obj_from.options.length; i++) {
    if (blnAll || (obj_from.options[i].selected == true)) {
      newEntry = new Option(obj_from.options[i].text,obj_from.options[i].value,false,true);
      obj_to.options[obj_to.options.length] = newEntry;
      obj_from.options[i] = null;
      i--;
      if(!blnAll) break;
    }
  }

  if(obj_from.options[i+1] != null){
    obj_from.selectedIndex = i+1;
  }
}
 //-->
</script>
</head>
<body>
<button onclick="push('unforce', false);">push()</button>
<button onclick="push('unforce', true);">push() - all</button>
<select id="force" multiple="mulitple">
  <option>Option 1</option>
  <option>Option 2</option>
  <option>Option 3</option>
  <option>Option 4</option>
</select>
<select id="unforce"></select>
</body>
</html>
Vielleicht hilft dir das weiter.

Ciao
Quaese
 
Zurück