webForumDet fria alternativet

flytta text från en listbox till en annan

JavaScript

5 svar · 222 visningar · startad av doggelito

Medlem sedan juni 20003 076 inlägg
Frågan#1

halåjs allihop!
jag vet att detta inte är nått man gör i en handvändning men jag frågar ändå!
jag behöver ett javascript där man kan flytta värden från en listbox till en annan, alltså:
om man har en listbox med ex. 10 namn i så ska man kunna klicka på ett av dem så att det flyttas över till den andra listboxen och klickar man sedan på ett av namnen i den andra boxen så ska det hoppa tillbaka till den första!

klart godkänt om någon kan fixa detta, ännu bättre är det om man, ex: har namnen i den första boxen med ett value på varje namn (typ id nummer från databas) och när man sedan klickar på ett namn så hoppar namnet över till den andra boxen + att idnumret lägger sig i en hidden field, denna hidden field kommaseparerar sedan varje idnummer som den får.

överkurs så det bara ryker om det, men är någon så här duktig så att den fixar detta så, WOW!!!!!!!

Medlem sedan juni 20003 076 inlägg
#2

hittade ett här som gick att ommodifiera lite så det passar, håll tillgodo ni som behöver nått liknande.
http://javascript.internet.com/forms/selection-box.html

Medlem sedan mars 20015 287 inlägg
Medlem sedan juni 20003 076 inlägg
#4

ok! då var det dags igen, ny fråga:
kan någon grejja så att när man klickar på ett namn i den andra textboxen så försvinner det!
man ska inte behöva raderarknappen alltså, det borde inte vara så svårt men jag klarar det ta mej tusan inte, help!

<HEAD>
<SCRIPT LANGUAGE="JavaScript">
function moveOver()  
{
var boxLength = document.form1.select_field2.length;
var selectedItem = document.form1.select_field1.selectedIndex;
var selectedText = document.form1.select_field1.options[selectedItem].text;
var selectedValue = document.form1.select_field1.options[selectedItem].value;
var i;
var isNew = true;
if (boxLength != 0) {
for (i = 0; i < boxLength; i++) {
thisitem = document.form1.select_field2.options[i].text;
if (thisitem == selectedText) {
isNew = false;
break;
      }
   }
} 
if (isNew) {
newoption = new Option(selectedText, selectedValue, false, false);
document.form1.select_field2.options[boxLength] = newoption;
}
document.form1.select_field1.selectedIndex=-1;
}
function removeMe() {
var boxLength = document.form1.select_field2.length;
arrSelected = new Array();
var count = 0;
for (i = 0; i < boxLength; i++) {
if (document.form1.select_field2.options[i].selected) {
arrSelected[count] = document.form1.select_field2.options[i].value;
}
count++;
}
var x;
for (i = 0; i < boxLength; i++) {
for (x = 0; x < arrSelected.length; x++) {
if (document.form1.select_field2.options[i].value == arrSelected[x]) {
document.form1.select_field2.options[i] = null;
   }
}
boxLength = document.form1.select_field2.length;
   }
}
function saveMe() {
var strValues = "";
var boxLength = document.form1.select_field2.length;
var count = 0;
if (boxLength != 0) {
for (i = 0; i < boxLength; i++) {
if (count == 0) {
strValues = document.form1.select_field2.options[i].value;
strValues2 = document.form1.select_field2.options[i].text;
}
else {
strValues = strValues + "," + document.form1.select_field2.options[i].value;
strValues2 = strValues2 + "," + document.form1.select_field2.options[i].text;
}
count++;
   }
}
if (strValues.length == 0) {
//alert("You have not made any selections");
}
else {
//alert("Here are the values you've selected:\r\n" + strValues);
        window.document.forms.form1.select_field2_value.value = strValues;
		window.document.forms.form1.select_field2_text.value = strValues2;
}
}
</script>
</HEAD>
<BODY>
<form name="form1" action="test2.asp" method="post">
  <table border=0>
    <tr> 
      <td valign="top" width=175> Tillgängliga produkter: <br>
        <select name="select_field1" size="3" onchange="moveOver();">
          <option value=1>Company News 
          <option value=2>Industry News 
          <option value=3>Product Updates 
          <option value=4>Product Specifications 
        </select>
      </td>
      <td valign="top"> Tillagda: <br>
        <select multiple name="select_field2" style="width:150;" size="3">
        </select>
      </td>
      <td valign="top">
        <input type="button" value="Ta bort tillbeh&ouml;r" onClick="removeMe();" name="button">
      </td>
    </tr>
    <tr> 
      <td colspan=3 height=10> 
        <input type="hidden" name="select_field2_value" value="">
        <input type="hidden" name="select_field2_text" value="">
        <input type="submit" onclick="saveMe();" value="Spara">
      </td>
    </tr>
  </table>
</form>
</body>
</html>
Medlem sedan mars 20015 287 inlägg
#5
function remove(box) {
for(var i=0; i<box.options.length; i++) {
if(box.options[i].selected && box.options[i] != "") {
box.options[i].value = "";
box.options[i].text = "";
   }
}
}

Kall på den:

        <select multiple name="select_field2" style="width:150;" size="3"  onClick="remove(select_field2);">
        </select>

Kanske inte den mest optimala lösningen men den fungerar för mig...

Medlem sedan juni 20003 076 inlägg
#6

Tack å bock! Funkar mycket bra. :)

253 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
126 ms — deklarationer (db)
0 ms — hämta statistik (cache)
125 ms — hämta tråd, inlägg och bilagor (db)
124 ms — ändringar (db)