Avatar billede the-gnu.dk Nybegynder
23. november 2002 - 12:38 Der er 1 løsning

<select> -> <select>

Da jeg desværre ikke er så god til javascript, håber jeg nogen kan hjælpe mig med et lille script.

Jeg har en checkbox:

    <select name="mm">
      <option value="1">1</option>
      <option value="2">2</option>
    </select>

og en mere...

    <select name="nn">
      <option value="1">Vælg mm..</option>
    </select>

Jeg vil så gerne have, at når man vælger fra mm, skal den komme emd nogle muligheder i nn - altså alt efter om man vælger 1 eller 2, skal den vise de tilhørende muligheder.
Avatar billede nikolajdu Nybegynder
23. november 2002 - 12:43 #1
Her er en fra Jakoba :

<html>
<head><title>Select menu vælger sekundær select menu.</title>
<META NAME="Generator" CONTENT="Stone's WebWriter 3">

<script language="JavaScript"> <!--

var selbokse = new Array();


selbokse['land'] =
    new Array ( "- vælg Amt -",    "København", "Aarhus",      "Odense"    ), // Danmark


// forhvert madsted skal databasen generere en url og et navn
selbokse['madsted'] =
    new Array(
        new Array (    // selbokse['madsted'][0][0]  for Danmark,København.
            "- vælg Restaurant -",
            "www.restaurant-cassiopeia.dk/|Cassiopeia",
            "www.dentatoveredeenke.dk/|Den Tatoverede Enke",
            "www.egoisten.dk/|Egoisten",
            "www.restaurant-kanalen.dk/|Kanalen",
            "www.krogs.dk/|Krogs Fiskerestaurant"
                  ),
        new Array (    // selbokse['madsted'][0][1]  for Danmark,Aarhus.
            "-1|- vælg Restaurant -",
            "www.rold.dk/|Rold Storkro",
            "www.spiseguiden.dk/luneborg/|Luneborg Kro",
            "home10.inet.tele.dk/ihj/|Hotel Plesner Skagen",
            "www.spiseguiden.dk/glvraaslot/|Gl. Vraa Slot",
            "www.pandrupkro.dk/index.htm|Pandrup Kro"

                  ),
        new Array (    // selbokse['madsted'][0][2]  for Danmark,Odense.
            "-1|- vælg Restaurant -",
            "www.le-provence.dk/Le Provence",
            "www.skaerven.dk/|skaerven",
            "www.majorgaarden.com/|Majorgården"
                  )
            );

var offMenu = new Array( " \< - \< - \< - \< - \< -" ); // >

var sel;
var selo;

function setOption( idx, data ) {
  var tmp = data.split("|");
  if ( tmp.length == 1 ) { tmp[1]=tmp[0]; tmp[0]="" };
  if ( selo.length > idx ) {
      selo[idx].text = tmp[1];
      selo[idx].value = tmp[0];
  } else
      selo[idx] = new Option( tmp[1], tmp[0] );
}; //end setOption( number, string, string )

function setupMenu( selobj, menuarray ) {
//alert("menuarray type: " +typeof(menuarray) );
    sel  = selobj.selectedIndex;
    selo = selobj.options;
    for (var i=0; menuarray.length>i; i++ ) setOption( i, menuarray[i] );
    selobj.selectedIndex = 0;
    selobj.disabled = ( menuarray==offMenu )?true:false;
    selo.length = menuarray.length;
}; //end setupMenu( select object, array )

var idxLand = -1;  // intet land valgt

function setMenu ( frm, selNavn ) {
  if ( selNavn == "" ) {
      setupMenu( frm.land, selbokse['land'] );
      setupMenu( frm.madsted, offMenu );
      idxLand = -1;
  } else
  if ( selNavn == 'land' ) {
      idxLand = frm.land.selectedIndex-1;
      if ( idxLand >= 0 )
          setupMenu( frm.madsted, selbokse['madsted'][idxLand] );
      else
          setupMenu( frm.madsted, offMenu );
  }  else
      alert( "Slem programfejl. du bør aldrig se denne besked." );
}; //end setMenu ( radioKnap element )

// -->  </script>
 
</head>
<body  onload="setMenu( document.sfrm, '' )">

<p><form name="sfrm" action="dest_fil.asp" onsubmit="return pakResultat(this);">
<center><table border=0 cellspacing=10>
  <tr>
    <td valign='top'>
        <select name="land" width="200px" style="width:200px"
          onchange="setMenu(this.form, this.name);">
          <option value=1>- - - - - - - - - - - -</option>
          <option value=2> </option>
          <option value=3> </option> <!-- indsæt toppe options af hensyn til NS4.x -->
          <option value=4> </option>
          <option value=5> </option>
          <option value=6> </option>
          <option value=7> </option>
          <option value=8> </option>
          <option value=9> </option>
          <option value=10> </option>
        </select>
    </td>
    <td valign='top'>
        <select name="madsted" width="200px" style="width:200px"
          onfocus="if (0>idxLand) this.blur();"
          onchange="if (this.selectedIndex>0) setMenu(this.form, this.name);">
          <option value=1>- - - - - - - - - - - -</option>
          <option value=2> </option>
          <option value=3> </option>
          <option value=4> </option>
          <option value=5> </option>
          <option value=6> </option>
          <option value=7> </option>
          <option value=8> </option>
          <option value=9> </option>
          <option value=10> </option>
        </select>
    </td>
  </tr>
</table></center>
</form>
<p>Bemærk at datamængden stiger exponentielt. Her med blot 3 valgmuligheder i hver select skal der loades 3*3 = 9 restaurantlinier. Med 6 valg i hver gruppe bliver tallet 6*6 = 36 restaurantlinier.
<p>Det kan blive så mange linier der skal hentes at det går hurtigere at hente ny data fra serveren for hvert valg.
<p>Især hvis du laver <A HREF="exp145224.html">flere niveauer</A> af selectbokse.</p>

<p align='right'><!-- WebWriter AutoDato -->Opdateret: 3.1.2002<!-- WW -->
</body>
</html>

/Nikolaj
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