Avatar billede halnet Nybegynder
05. april 2001 - 12:12 Der er 12 kommentarer og
1 løsning

Fra <select> til <select>. Samt scroll op og ned!

Jeg har prøvet mig lidt frem, men kan ikke finde en løsning - jeg har brug for hjælp!

Jeg har en side, hvor jeg hiver $uid og $name ud fra en datebase og putter dem i en select.

Det scriptet skal er at kunne flytte $id+$name over i en anden select. I denne select skal det være muligt at flytte de enkelte options op og ned - prioriteringliste.

Siden er ikke lavet med frames.

Hurtig svar belønnes med 100 ekstra point!

- Anders
Avatar billede dudal Nybegynder
05. april 2001 - 12:22 #1
Prøv at kigge på denne side:
http://1001line.dk/filop/vbscript/genraekkefoelge.asp

Det er vist nogenlunde det du leder efter.

Mvh
Jesper
Avatar billede halnet Nybegynder
05. april 2001 - 12:28 #2
Det er præcis det jeg skal bruge.
Dog skal det virke i andet end MSIE og så må det ikke være VBscript.

Det må være JavaScript eller PHP(Det skal bare være client-side, så php er ikke aktuelt!).

- Anders
Avatar billede dudal Nybegynder
05. april 2001 - 12:29 #3
Arrrrghhh... :-)

Jeg regnede egentligt med at det var til et admin system, så derfor smed jeg det op.

/Jesper
Avatar billede halnet Nybegynder
05. april 2001 - 12:31 #4
Det var perfekt... bare ikke i JavaScript... og så virkede det ikke i testbrowseren...

- Anders
Avatar billede dudal Nybegynder
05. april 2001 - 12:35 #5
Ok, så prøver vi dette:

<script language=\"JavaScript\"><!--
function deleteOption(object,index) {
    object.options[index] = null;
}

function addOption(object,text,value) {
    var defaultSelected = true;
    var selected = true;
    var optionName = new Option(text, value, defaultSelected, selected)
    object.options[object.length] = optionName;
}

function copySelected(fromObject,toObject) {
    for (var i=0, l=fromObject.options.length;i<l;i++) {
        if (fromObject.options[i].selected)
            addOption(toObject,fromObject.options[i].text,fromObject.options[i].value);
    }
    for (var i=fromObject.options.length-1;i>-1;i--) {
        if (fromObject.options[i].selected)
            deleteOption(fromObject,i);
    }
}

function copyAll(fromObject,toObject) {
    for (var i=0, l=fromObject.options.length;i<l;i++) {
        addOption(toObject,fromObject.options[i].text,fromObject.options[i].value);
    }
    for (var i=fromObject.options.length-1;i>-1;i--) {
        deleteOption(fromObject,i);
    }
}
//--></script>

<form>

<table><tr><td>

<select name=\"select1\" multiple size=\"7\">
<option>zero
<option>one
<option>two
<option>three
<option>four
<option>five
<option>six
</select>

</td><td>

<input type=\"button\" value=\" > \" onClick=\"if (document.images) copySelected(this.form.select1,this.form.select2)\">
<p>
<input type=\"button\" value=\" < \" onClick=\"if (document.images) copySelected(this.form.select2,this.form.select1)\">
<p>
<input type=\"button\" value=\">>\" onClick=\"if (document.images) copyAll(this.form.select1,this.form.select2)\">
<p>
<input type=\"button\" value=\"<<\" onClick=\"if (document.images) copyAll(this.form.select2,this.form.select1)\">

</td><td>

<select name=\"select2\" multiple size=\"7\">
</select>

</td></tr></table>

</form>


Det er udelukkende til at flytte mellem 2 selectbokse... :-)

/Jesper
Avatar billede jakoba Nybegynder
05. april 2001 - 12:55 #6
utestet:
flytte, og et par bytte-om knapper

<script language=\'javascript\'>

// kopier til anden select
//
function selCopy( frasel, tilsel ) {
  if ( tilsel.length > frasel.length ) tilsel.length = frasel.length;
  for ( var i=0; frasel.length>i; i++ ) {
    if ( i >= tilsel.length ) tilsel[i] = new Option;
    tilsel[i].text  = frasel[i].text;
    tilsel[i].value = frasel[i].value;
  };
}

// flytte selected valgmulighed een op
//
function selFlytOp( sel ) {
  if ( sel.selectedIndex < 0 ) return false; // ingenting selected
  if ( sel.selectedIndex ==0 ) return false; // allerede øverst
  var temp = sel[sel.selectedIndex];
  sel[sel.selectedIndex] = sel[sel.selectedIndex-1]
  sel[sel.selectedIndex-1] = temp;
  sel.selectedIndex -= 1;
  return true;                  // hvis engang du vil teste
};

// flytte selected valgmulighed een ned
//
function selFlytNed( sel ) {
  if ( sel.selectedIndex < 0 ) return false; // ingenting selected
  if ( sel.selectedIndex == (sel.length-1) ) return false; // allerede nederst
  var temp = sel[sel.selectedIndex];
  sel[sel.selectedIndex] = sel[sel.selectedIndex+1]
  sel[sel.selectedIndex+1] = temp;
  sel.selectedIndex += 1;
  return true;
};

</script>

</head>
<body onload=\"selCopy(document.form1.sel1, document.form2.sel2)\">

<form  name=\'form1\'>
<select name=\'sel1\'>
  <option>xxx</option>
...      <!-- masser af options genereret på server -->
</select>
</form>

<form name=\'form2\'>
<select name=\'sel2\'>
  <option>------------------------------</option> <!-- passende lang udspiler (NS4) -->
  <option>-</option>
  <option>-</option> <!-- 4-5 styks af hensyn til NS4.7og tidligere -->
  <option>-</option>
  <option>-</option>
...     
</select><br>
<input name=\'button\' value=\'up\' onclick=\"selFlytOp(this.form.sel2)\">
<input name=\'button\' value=\'ned\' onclick=\"selFlytNed(this.form.sel2)\">
</form>

mvh JakobA
Avatar billede dudal Nybegynder
05. april 2001 - 13:04 #7
Så fik jeg den sidste til at virke også. :-)

/Jesper


<script language=\"JavaScript\"><!--
function deleteOption(object,index) {
    object.options[index] = null;
}

function addOption(object,text,value) {
    var defaultSelected = true;
    var selected = true;
    var optionName = new Option(text, value, defaultSelected, selected)
    object.options[object.length] = optionName;
}

function copySelected(fromObject,toObject) {
    for (var i=0, l=fromObject.options.length;i<l;i++) {
        if (fromObject.options[i].selected)
            addOption(toObject,fromObject.options[i].text,fromObject.options[i].value);
    }
    for (var i=fromObject.options.length-1;i>-1;i--) {
        if (fromObject.options[i].selected)
            deleteOption(fromObject,i);
    }
}

function copyAll(fromObject,toObject) {
    for (var i=0, l=fromObject.options.length;i<l;i++) {
        addOption(toObject,fromObject.options[i].text,fromObject.options[i].value);
    }
    for (var i=fromObject.options.length-1;i>-1;i--) {
        deleteOption(fromObject,i);
    }
}

function flytop() {
felt = document.form1.select2
    if (felt.options.selectedIndex != -1) {
        index = felt.options.selectedIndex
        if ( index == 0 ) {
        } else {
        byttekst = felt.options[felt.options.selectedIndex - 1].text
        felt.options[felt.options.selectedIndex - 1].text = felt.options[felt.options.selectedIndex].text;
        felt.options[felt.options.selectedIndex].text = byttekst;
        felt.options.selectedIndex = index-1;
        }
    }
}

function flytned() {
felt = document.form1.select2
    if (felt.options.selectedIndex != -1) {
        index = felt.options.selectedIndex
        if ( index == felt.options.length - 1 ) {
        } else {
        byttekst = felt.options[felt.options.selectedIndex + 1].text
        felt.options[felt.options.selectedIndex + 1].text = felt.options[felt.options.selectedIndex].text;
        felt.options[felt.options.selectedIndex].text = byttekst;
        felt.options.selectedIndex = index + 1;
        }
    }
}


//--></script>

<form name=\"form1\">

<table><tr><td>

<select name=\"select1\" multiple size=\"7\">
<option>zero
<option>one
<option>two
<option>three
<option>four
<option>five
<option>six
</select>

</td><td>

<input type=\"button\" value=\" > \" onClick=\"if (document.images) copySelected(this.form.select1,this.form.select2)\">
<p>
<input type=\"button\" value=\" < \" onClick=\"if (document.images) copySelected(this.form.select2,this.form.select1)\">
<p>
<input type=\"button\" value=\">>\" onClick=\"if (document.images) copyAll(this.form.select1,this.form.select2)\">
<p>
<input type=\"button\" value=\"<<\" onClick=\"if (document.images) copyAll(this.form.select2,this.form.select1)\">

</td><td>

<select name=\"select2\" multiple size=\"7\">
</select>

</td></tr></table>

<input type=\"button\" onclick=\"flytop();\" value=\"op\">
<input type=\"button\" onclick=\"flytned();\" value=\"ned\">
</form>

Avatar billede halnet Nybegynder
05. april 2001 - 13:36 #8
-> Jakoba
Den virker ikke... ihf ikke efter hensigten.

-> Dudal
Den virker perfekt, MEN nu skal det jo smides i et array. Normalt vil man kalde den for \"select2[]\" i stedet for \"select2\". Det kan ikke lade sig gøre her.

Nogen gode ideer?

- Anders
Avatar billede halnet Nybegynder
05. april 2001 - 13:38 #9
Det bliver sendt via POST til et PHP-script. Det er i PHP jeg arbejder videre med arrayet!

- Anders
Avatar billede dudal Nybegynder
05. april 2001 - 13:42 #10
Arrrgh... Php er mystisk. :-)

document.FormName.elements[\'liste[]\'].value kan bruges til at tilgå et element som hedder liste[].

Kan du selv på det smidt ind?

/Jesper
Avatar billede halnet Nybegynder
05. april 2001 - 14:03 #11
Ikke forstået.

Jeg er nødttil at kalde den der hedder \"select2\" nu for \"select2[]\" for at jeg kan bruge den videre i php.
Hvis jeg ændrer alle de steder hvor der står \"select2\" til \"select2[]\" kommer der en syntax-error. Jeg går ud fra at det er fordi [] er reserveret i javascript!

Jeg har ikke helt forstået hvad du mener med din forrige kommentar.

- Anders
Avatar billede halnet Nybegynder
05. april 2001 - 14:27 #12
Nu er det forstået!!!
Tak for hjælpen...

- Anders
Avatar billede dudal Nybegynder
05. april 2001 - 14:34 #13
Ok... Takker mange gange. :)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester