Avatar billede kimox Nybegynder
27. april 2008 - 23:06 Der er 17 kommentarer og
2 løsninger

Hjælp til dropdown

Hej eksperter.

Jeg har prøvet at lave en dropdown som ville aktivere et nyt almindeligt tekst felt under sig.

Men jeg kan bare ikke få det til at virke...

Script kode:
<script language="JavaScript" type="text/JavaScript">
<!--

function MM_findObj(n, d) { //v4.01
  var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
    d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
  if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
  for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
  if(!x && d.getElementById) x=d.getElementById(n); return x;
}

function SelectedMethod() {
    i = document.getElementById('status').options.selectedIndex;
    if (i == 'andet') {
   
        MM_showHideLayers('andet','','show','server','','hide');
}
}

function MM_showHideLayers() { //v6.0
  var i,p,v,obj,args=MM_showHideLayers.arguments;
  for (i=0; i<(args.length-2); i+=3) if ((obj=MM_findObj(args[i]))!=null) { v=args[i+2];
    if (obj.style) { obj=obj.style; v=(v=='show')?'block':(v=='hide')?'none':v; }
//    obj.visibility=v;
    obj.display=v;
    }
}
   
//-->
</script>

kode på siden:
                      <select name="status" id="status" class="input" style="width:199px;" onchange="SelectedMethod();">
                        <option value="0" selected="selected">V&aelig;lg status</option>
                        <option value="test 1">test 1</option>
                        <option value="test 2">test 2</option>
                        <option value="andet">Andet</option>
                      </select>
            <div id="andet" style="position:relative; display:none; background-color:#FFFFFF;">
            <input name="jobandet" type="text" class="input" id="andet" size="30">
              </div>


og så kunne jeg virkelig godt tænke mig et andet script som går ind og finder ud af hvad år vi har nu og så laver den en datoscript som automatisk laver en dropdown som går fra 16 år siden og så 100 år tilbage fra det år man er i. dvs den ser sådan ud:

1992
1991
1990
1989
1988
1987
osv osv.....
Avatar billede crazysnap Seniormester
28. april 2008 - 10:36 #1
Hvis vi lige tager en ting af gangen. Så vidt jeg kan se, skal tekst-feltet under din dropdown gøres synlig, når der vælges 'Andet' fra din dropdown. I din SelectedMethod metode sammenligner du på selectedIndex (som er numerisk) med en streng, så din if(i == 'andet') statement altid vil blive false og MM_showHideLayers derfor aldrig blive kaldt.

Hvis du erstatter din SelectedMethod() med følgende, sammenligner du på den valgte værdi i din dropdown (i stedet for indekset til den valgte værdi) og MM_showHideLayers burde derfor blive kaldt når 'Andet' vælges. Jeg har desuden tilføjet at div'en gemmes igen hvis test 1 eller 2 vælges efter 'Andet' er valgt.


function SelectedMethod() {
    var dd = document.getElementById('status');
    var i = dd.options[dd.options.selectedIndex].value.toLowerCase();

    if (i == 'andet')
        MM_showHideLayers('andet','','show','server','', 'hide');
    else
        MM_showHideLayers('andet','','hide','server','', 'hide');
}


Håber dette hjælper dig lidt videre.

Mvh.
CS
Avatar billede roenving Novice
28. april 2008 - 13:09 #2
-- og den anden kan du f.eks. gøre sådan med:

window.onload = function(){
  var sel = document.getElementById("dinSelect");
  var aar = new Date().getFullYear();
  for(i=aar-16,im=aar-101;i>im;i--)
    sel.options[sel.length] = new Option(i,i);
}
Avatar billede kimox Nybegynder
28. april 2008 - 20:06 #3
crazysnap - lækkert, det virker - så blev jeg lidt klogere, nu har jeg flere felter hvor man kan vælge "alt" i, så der vil komme flere dropdowns af samme type på samme side. tilføjer jeg bare SelectedMethod funktionen flere gange.. feks:
function SelectedMethod() {
    var dd = document.getElementById('status_to');
    var i = dd.options[dd.options.selectedIndex].value.toLowerCase();

    if (i == 'andet')
        MM_showHideLayers('andet','','show','server','', 'hide');
    else
        MM_showHideLayers('andet','','hide','server','', 'hide');
}

eller noget ?

Roenving - jeg er ikke den bedste til javascipt.. hvordan aktivere jeg functionen i en dropdown ?
Avatar billede roenving Novice
28. april 2008 - 20:15 #4
Hvornår skal du aktivere den, og hvorfor ?-)
Avatar billede kimox Nybegynder
28. april 2008 - 20:19 #5
roenving - hahahah glem det.. det virker jo perfekt. jeg var ik helt med nemlig, men nu er jeg :P.. hvis du kan svarer på mit andet spørgsmål oppe over må du meget gerne, jeg ved ikke om crazysnap er på lige nu, og er igang med at lave det nu :o)
Avatar billede roenving Novice
28. april 2008 - 20:36 #6
Nej, du overfører mest optimalt oplysningerne til funktionen, f.eks.

<select name="status" id="status" class="input" style="width:199px;" onchange="SelectedMethod(this,'andet1');">

-- en anden select:

<select name="status" id="status" class="input" style="width:199px;" onchange="SelectedMethod(this,'andet17');">

-- og så funktionen:

function SelectedMethod(sel, elm) {
    var opt = sel.value.toLowerCase();

    if (opt == 'andet')
        MM_showHideLayers(elm,'','show','server','', 'hide');
    else
        MM_showHideLayers(elm,'','hide','server','', 'hide');
}
Avatar billede kimox Nybegynder
28. april 2008 - 20:43 #7
ah okay skal funktionen så se sådan ud som du har lavet den eller skal jeg rette den til med de oplysninger jeg skriver i SelectedMethod(this,'andet17');">
Avatar billede kimox Nybegynder
28. april 2008 - 21:05 #8
hm nu har jeg prøvet lidt forskelligt og kan ik få den til det :o(
Avatar billede roenving Novice
28. april 2008 - 21:11 #9
Det kommer an på ...

-- grundlæggende skal du kun sætte parametrene i kaldet, og så lade funktionen stå som den er, men jeg har ikke gennemskuet præcis, hvor du vil hen (hvad er elementet 'server' f.eks. ?-)

-- og hvis det er fuldstændig forskellige værdier, kan det være at grundkonfigurationen af funktionen bør være helt anderledes (det kan sågar ske, at der kan være fornuft i at lave flere forskellige, men det lyder absolut tåbeligt og usandsynligt !-)
Avatar billede kimox Nybegynder
28. april 2008 - 21:25 #10
hehehe okay jeg tager den lige fra bunden.

Server behøver ikke være der.

sådan ser 2 af mine select ud:
                      <td width="30%" bgcolor="#E3E3E3" class="main_txt" valign="top">Jobstatus: </td>
                      <td width="72%" bgcolor="#E3E3E3">
                      <select name="jobstatus" id="jobstatus" class="input" style="width:199px;" onChange="SelectedMethod(this,'andet1');">
                        <option value="0" selected="selected">V&aelig;lg status</option>
                        <option value="Ledig">Ledig</option>
                        <option value="I arbejde">I arbejde</option>
                        <option value="andet">Andet</option>
                      </select>
            <div id="jandet" style="position:relative; display:none; background-color:#E3E3E3;">
            <img src="images/pil.gif"> <input name="job_andet" type="text" class="input" id="job_andet" size="30">
              </div></td></tr>
                  <tr>
                      <td class="main_txt">Job start: </td>
                      <td>
                      <select name="jobstart" id="jobstart" class="input" style="width:199px;" onChange="SelectedMethod(this,'andet2');">
                        <option value="0">V&aelig;lg status</option>
                        <option value="Hurtigst muligt">Hurtigst muligt</option>
                        <option value="Indenfor 1 uge">Indenfor 1 uge</option>
                        <option value="Indenfor 2 uger">Indenfor 2 uger</option>
                        <option value="Indenfor 1 mdr.">Indenfor 1 mdr.</option>
                        <option value="Mere end 1 mdr.">Mere end 1 mdr.</option>
                        <option value="andet">Andet</option>
                                            </select>
            <div id="jstart" style="position:relative; display:none; background-color:#FFFFFF;">
            <img src="images/pil.gif"> <input name="job_start" type="text" class="input" id="job_start" size="30">
              </div>
                    </td>
                    </tr>

uanset hvilken en af dem(evt begge eller flere endnu) man vælger "andet" i så skal der komme et ekstra felt neden under som du kan se i div felterne :o) select boksene vil hedde noget forskelligt så jeg kan smide inforerne op på min server eller pr mail.
Avatar billede roenving Novice
28. april 2008 - 21:31 #11
-- så skal du referere til den div, der skal vises/skjules, altså hhv.

<select name="jobstatus" id="jobstatus" class="input" style="width:199px;" onChange="SelectedMethod(this,'jandet');">

-- og:

<select name="jobstart" id="jobstart" class="input" style="width:199px;" onChange="SelectedMethod(this,'jstart');">
Avatar billede kimox Nybegynder
28. april 2008 - 21:37 #12
PERFEKT !!!!
tusind tak for hjælpen .. smid dit svar :oD
Avatar billede roenving Novice
28. april 2008 - 21:47 #13
Det må vel blive en deler, da crazysnap jo satte dig i gang med det første problem !-)

-- så vent du på hans reaktion også, før du fordeler pointene ,-)

-- els velbekomme '-)
Avatar billede crazysnap Seniormester
29. april 2008 - 09:19 #14
Ja, jeg var desværre ikke på igår aftes, men godt at se du fik løst problemet med roenvings hjælp. Så ingen point til mig tak. :)

Mvh.
CS
Avatar billede kimox Nybegynder
29. april 2008 - 09:55 #15
crazysnap - jo jeg synes bestemt du skal have nogen point, du hjalp også, + jeg fik lært noget ;o)
Avatar billede crazysnap Seniormester
29. april 2008 - 10:01 #16
Så skidt da, et lille svar fra mig af. :)

Mvh.
CS
Avatar billede kimox Nybegynder
29. april 2008 - 10:09 #17
sådan :o)

Håber det er ok med 100 hver .. igen tak for hjælpen begge.

-lukket-
Avatar billede roenving Novice
29. april 2008 - 13:24 #18
-- og jeg takker for point ;~}
Avatar billede crazysnap Seniormester
29. april 2008 - 13:27 #19
Det var så lidt og jeg takker også for pointene. :)
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