Avatar billede gadebarnet Nybegynder
19. april 2006 - 14:32 Der er 18 kommentarer og
1 løsning

2 select

JEg har 2 select

I dem er der 5 datoer.

Hvis jeg vælger f.eks den 01-01-2007 i select nummer 1 skal den forsvinde i select nummer 2

Hvordan?
Avatar billede horsmark Nybegynder
19. april 2006 - 20:19 #1
<script type="text/javascript">
    function removeValue(s){
      var eSelect = document.getElementById('targetSelect')
      for (var i = eSelect.length - 1; i>=0; i--) {
        if (eSelect.options[i].value == s) {
          eSelect.remove(i);
        }
      }
    }

</script>

<select onchange="removeValue(this.value)">
    <option value="01-01-1972">01-01-1972</option>
    <option value="01-02-1972">01-02-1972</option>
    <option value="02-01-1982">02-01-1982</option>
</select>

<select id="targetSelect">
    <option value="01-01-1972">01-01-1972</option>
    <option value="01-02-1972">01-02-1972</option>
    <option value="02-01-1982">02-01-1982</option>
</select>
Avatar billede gadebarnet Nybegynder
20. april 2006 - 08:07 #2
Kan du lave at så når man ændre nummer 1 til noget andet, så kommer de alle igen i nummer 2 undtagen den man har valgt?

Kan man ikke hide en option istedet for at fjerne den ?
Avatar billede mclemens Nybegynder
20. april 2006 - 16:33 #3
sådan?

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><meta http-equiv="content-type" content="text/html; charset=iso-8859-1"><title>Ingen titel</title>

<script type="text/javascript">

arrd=["01-01-2007","03-03-2007","11-11-2007"];

f="";
window.onload=function(){f=document.forms.formnavn;
recalc(f.date1,2);recalc(f.date2,1);}

function recalc(tn,nr){
nr=f.elements["date"+nr];
while(0<nr.childNodes.length)nr.removeChild(nr.childNodes[0]);
for(i=0;i<arrd.length;i++){
  if(tn[tn.selectedIndex].value!=arrd[i]){
  opttxt=document.createTextNode(arrd[i]);
  opt=document.createElement("option");
  opt.setAttribute("value",arrd[i]);
  opt.appendChild(opttxt);
  nr.appendChild(opt);
  }
}
}

function recalcfwrd(tn,nr){recalc(tn,nr);}

</script></head>

<body leftmargin="0" rightmargin="0" topmargin="0">

<form name="formnavn">
<select onchange="recalcfwrd(this,2);" id="date1">
    <option value="01-01-2007">01-01-2007</option>
</select><br>
<select onchange="recalcfwrd(this,1);" id="date2">
    <option value="01-01-2007">01-01-2007</option>
</select>
</form>

</body></html>
Avatar billede gadebarnet Nybegynder
20. april 2006 - 16:40 #4
JEg køre en multiple select, og der fungere det ikke ???
Avatar billede mclemens Nybegynder
20. april 2006 - 16:58 #5
så skal den omskrives til at gennemløbe de to selects istedet ... (gør det senere)
Avatar billede gadebarnet Nybegynder
20. april 2006 - 17:05 #6
det er meget vigtigt....

Evt. flere point ?
Avatar billede mclemens Nybegynder
20. april 2006 - 17:08 #7
sådan, det blev med det samme :)

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><meta http-equiv="content-type" content="text/html; charset=iso-8859-1"><title>Ingen titel</title>

<script type="text/javascript">

arrd=["01-01-2007","03-03-2007","11-11-2007"];

f="";
window.onload=function(){f=document.forms.formnavn;
recalc(f.date1,2);recalc(f.date2,1);}

function recalc(tn,nr){
nr=f.elements["date"+nr];
selecteds="";
runselc=tn.childNodes;
for(i=0;i<runselc.length;i++)if(runselc[i].selected)selecteds+="_"+i+"_";

while(0<nr.childNodes.length)nr.removeChild(nr.childNodes[0]);
for(i=0;i<arrd.length;i++){
  if(selecteds.indexOf("_"+i+"_")<0){
  opttxt=document.createTextNode(arrd[i]);
  opt=document.createElement("option");
  opt.setAttribute("value",arrd[i]);
  opt.appendChild(opttxt);
  nr.appendChild(opt);
  }
}
}

function recalcfwrd(tn,nr){recalc(tn,nr);}

</script></head>

<body leftmargin="0" rightmargin="0" topmargin="0">

<form name="formnavn">
<select multiple="multiple" onchange="recalcfwrd(this,2);" id="date1">
    <option value="01-01-2007">01-01-2007</option>
</select><br>
<select multiple="multiple" onchange="recalcfwrd(this,1);" id="date2">
    <option value="01-01-2007">01-01-2007</option>
</select>
</form>

</body></html>
Avatar billede mclemens Nybegynder
20. april 2006 - 17:09 #8
næsten...
Avatar billede mclemens Nybegynder
20. april 2006 - 17:11 #9
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><meta http-equiv="content-type" content="text/html; charset=iso-8859-1"><title>Ingen titel</title>

<script type="text/javascript">

arrd=["01-01-2007","03-03-2007","11-11-2007"];

f="";
window.onload=function(){f=document.forms.formnavn;
recalc(f.date1,2);recalc(f.date2,1);}

function recalc(tn,nr){
nr=f.elements["date"+nr];
selecteds="";
runselc=tn.childNodes;
for(i=0;i<runselc.length;i++)if(runselc[i].selected)selecteds+="_"+runselc[i].value+"_";

while(0<nr.childNodes.length)nr.removeChild(nr.childNodes[0]);
for(i=0;i<arrd.length;i++){
  if(selecteds.indexOf("_"+arrd[i]+"_")<0){
  opttxt=document.createTextNode(arrd[i]);
  opt=document.createElement("option");
  opt.setAttribute("value",arrd[i]);
  opt.appendChild(opttxt);
  nr.appendChild(opt);
  }
}
}

function recalcfwrd(tn,nr){recalc(tn,nr);}

</script></head>

<body leftmargin="0" rightmargin="0" topmargin="0">

<form name="formnavn">
<select multiple="multiple" onchange="recalcfwrd(this,2);" id="date1">
    <option value="01-01-2007">01-01-2007</option>
</select><br>
<select multiple="multiple" onchange="recalcfwrd(this,1);" id="date2">
    <option value="01-01-2007">01-01-2007</option>
</select>
</form>

</body></html>
Avatar billede mclemens Nybegynder
20. april 2006 - 17:12 #10
hov, den sletter de andre selectede... den mangler jeg lige :P
Avatar billede mclemens Nybegynder
20. april 2006 - 17:18 #11
sådan og så skal den bare sørge for at sortere dem ordentligt :P

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><meta http-equiv="content-type" content="text/html; charset=iso-8859-1"><title>Ingen titel</title>

<script type="text/javascript">

arrd=["01-01-2007","03-03-2007","11-11-2007"];

f="";
window.onload=function(){f=document.forms.formnavn;
recalc(f.date1,2);recalc(f.date2,1);}

function recalc(tn,nr){
nr=f.elements["date"+nr];
selecteds="";
runselc=tn.childNodes;
for(i=0;i<runselc.length;i++)if(runselc[i].selected)selecteds+="_"+runselc[i].value+"_";
selecteds2="";
runselc=nr.childNodes;
for(i=0;i<runselc.length;i++)if(runselc[i].selected)selecteds2+="_"+runselc[i].value+"_";

for(i=(nr.childNodes.length-1);i>-1;i--)if(!nr.childNodes[i].selected)nr.removeChild(nr.childNodes[i]);
for(i=0;i<arrd.length;i++){
  if((selecteds.indexOf("_"+arrd[i]+"_")<0)&&(selecteds2.indexOf("_"+arrd[i]+"_")<0)){
  opttxt=document.createTextNode(arrd[i]);
  opt=document.createElement("option");
  opt.setAttribute("value",arrd[i]);
  opt.appendChild(opttxt);
  nr.appendChild(opt);
  }
}
}

function recalcfwrd(tn,nr){recalc(tn,nr);}

</script></head>

<body leftmargin="0" rightmargin="0" topmargin="0">

<form name="formnavn">
<select multiple="multiple" onchange="recalcfwrd(this,2);" id="date1">
    <option value="01-01-2007">01-01-2007</option>
</select><br>
<select multiple="multiple" onchange="recalcfwrd(this,1);" id="date2">
    <option value="01-01-2007">01-01-2007</option>
</select>
</form>

</body></html>
Avatar billede mclemens Nybegynder
20. april 2006 - 17:22 #12
sådan ... så burde den være der :P

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><meta http-equiv="content-type" content="text/html; charset=iso-8859-1"><title>Ingen titel</title>

<script type="text/javascript">

arrd=["01-01-2007","03-03-2007","11-11-2007"];

f="";
window.onload=function(){f=document.forms.formnavn;
recalc(f.date1,2);recalc(f.date2,1);}

function recalc(tn,nr){
nr=f.elements["date"+nr];
selecteds="";
runselc=tn.childNodes;
for(i=0;i<runselc.length;i++)if(runselc[i].selected)selecteds+="_"+runselc[i].value+"_";
selecteds2="";
runselc=nr.childNodes;
for(i=0;i<runselc.length;i++)if(runselc[i].selected)selecteds2+="_"+runselc[i].value+"_";

while(0<nr.childNodes.length)nr.removeChild(nr.childNodes[0]);
for(i=0;i<arrd.length;i++){
  if(selecteds.indexOf("_"+arrd[i]+"_")<0){
  opttxt=document.createTextNode(arrd[i]);
  opt=document.createElement("option");
  if(selecteds2.indexOf("_"+arrd[i]+"_")>-1)opt.setAttribute("selected","selected");
  opt.setAttribute("value",arrd[i]);
  opt.appendChild(opttxt);
  nr.appendChild(opt);
  }
}
}

function recalcfwrd(tn,nr){recalc(tn,nr);}

</script></head>

<body leftmargin="0" rightmargin="0" topmargin="0">

<form name="formnavn">
<select multiple="multiple" onchange="recalcfwrd(this,2);" id="date1">
    <option value="01-01-2007">01-01-2007</option>
</select><br>
<select multiple="multiple" onchange="recalcfwrd(this,1);" id="date2">
    <option value="01-01-2007">01-01-2007</option>
</select>
</form>

</body></html>
Avatar billede mclemens Nybegynder
20. april 2006 - 17:29 #13
... det kan godt være du skal putte lidt css på selects
så de ikke mister bredde ved alle selected i den ene boks...
<style type="text/css">
#date1,#date2{width:100px;}
</style>
Avatar billede mclemens Nybegynder
20. april 2006 - 17:56 #14
og hvis man ikke skal kunne vælge i select 2 bruger du denne form istedet:
<form name="formnavn">
<select multiple="multiple" onchange="recalcfwrd(this,2);" id="date1">
    <option value="01-01-2007">01-01-2007</option>
</select><br>
<select multiple="multiple" disabled="disabled" id="date2">
    <option value="01-01-2007">01-01-2007</option>
</select>
</form>
Avatar billede spaceus Nybegynder
25. april 2006 - 13:15 #15
hehe, et klasisk eksempel på for hurtigt frigivet kode ;)
Avatar billede mclemens Nybegynder
25. april 2006 - 13:31 #16
[ hehe, et klasisk eksempel på for hurtigt frigivet kode ;) ]
Måske en lille smule... men det skulle jo gå hurtigt... Når bare slutresultatet (man når frem til før eller siden) virker så er det jo helt fint :D
Avatar billede gadebarnet Nybegynder
25. april 2006 - 13:43 #17
Skal du lige have nogle point ?
Avatar billede mclemens Nybegynder
25. april 2006 - 13:45 #18
god ide :)
Avatar billede mclemens Nybegynder
25. april 2006 - 13:50 #19
og tak for point :)
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