Beschrijving toevoegen aan drop down menu

Status
Niet open voor verdere reacties.

Bar2aYunie

Gebruiker
Lid geworden
4 jan 2010
Berichten
7
Hallo,

Ik heb een drop down gelinkt menu of combinatie menu, maar ik wil daar eigenlijk graag een beschrijving aan kunnen toevoegen.

Er moeten 5 drop down menu's komen en na iedere selectie uit een menutje komen er andere opties beschikbaar in het volgende menu. Maar hier moet een beschrijving bij.

Dus een ruimte onderaan alle drop down menu's die na het maken van de laatste selectie in het vijfde menu een tekst kan weergeven. Deze hoeft niet in een textara box te staan, maar er moet een tabel in komen met informatie.

Ik heb zelf al een opzetje voor de drop down menu's, maar ik krijg er geen beschrijving bij. Niet letten op de invulling van de tekst, daar had ik nog geen aandacht aan besteed omdat het eerst moet werken en heb het dus ingevuld met opeenvolgende nummers.

Hier is mijn code:

Code:
<table>
<tr>
<td width="680">
  
<script language="JavaScript" type="text/javascript">

data_1 = new Option("1", "$");
	data_2 = new Option("2", "$$");

// 2e menu

	data_1_1 = new Option("11", "-");
	data_1_2 = new Option("12", "-");
	data_2_1 = new Option("21", "--");
	data_2_2 = new Option("22", "--");
	data_2_3 = new Option("23", "--");
	data_2_4 = new Option("24", "--");
	data_2_5 = new Option("25", "--");

// 3e menu

	data_1_1_1 = new Option("111", "*");
	data_1_1_2 = new Option("112", "*");
	data_1_1_3 = new Option("113", "*");
	data_1_2_1 = new Option("121", "*");
	data_1_2_2 = new Option("122", "*");
	data_1_2_3 = new Option("123", "*");
	data_1_2_4 = new Option("124", "*");
	data_2_1_1 = new Option("211", "**");
	data_2_1_2 = new Option("212", "**");
	data_2_2_1 = new Option("221", "**");
	data_2_2_2 = new Option("222", "**");
	data_2_3_1 = new Option("231", "***");
	data_2_3_2 = new Option("232", "***");

// 4e menu

	data_2_2_1_1 = new Option("2211","%")
	data_2_2_1_2 = new Option("2212","%%")

// 5e menu

	data_2_2_1_1_1 = new Option("2211","%")
	data_2_2_1_2_2 = new Option("2212","%%")


    displaywhenempty=""
    valuewhenempty=-1

    displaywhennotempty="-select-"
    valuewhennotempty=0


function change(currentbox) {
	numb = currentbox.id.split("_");
	currentbox = numb[1];

    i=parseInt(currentbox)+1


    while ((eval("typeof(document.getElementById(\"combo_"+i+"\"))!='undefined'")) &&
           (document.getElementById("combo_"+i)!=null)) {
         son = document.getElementById("combo_"+i);
	     for (m=son.options.length-1;m>0;m--) son.options[m]=null;
	     son.options[0]=new Option(displaywhenempty,valuewhenempty)
	     i=i+1
    }


    stringa='data'
    i=0
    while ((eval("typeof(document.getElementById(\"combo_"+i+"\"))!='undefined'")) &&
           (document.getElementById("combo_"+i)!=null)) {
           eval("stringa=stringa+'_'+document.getElementById(\"combo_"+i+"\").selectedIndex")
           if (i==currentbox) break;
           i=i+1
    }


    following=parseInt(currentbox)+1

    if ((eval("typeof(document.getElementById(\"combo_"+following+"\"))!='undefined'")) &&
       (document.getElementById("combo_"+following)!=null)) {
       son = document.getElementById("combo_"+following);
       stringa=stringa+"_"
       i=0
       while ((eval("typeof("+stringa+i+")!='undefined'")) || (i==0)) {

	   	  if ((i==0) && eval("typeof("+stringa+"0)=='undefined'"))
	   	      if (eval("typeof("+stringa+"1)=='undefined'"))
	   	         eval("son.options[0]=new Option(displaywhenempty,valuewhenempty)")
	   	      else
	             eval("son.options[0]=new Option(displaywhennotempty,valuewhennotempty)")
	      else
              eval("son.options["+i+"]=new Option("+stringa+i+".text,"+stringa+i+".value)")
	      i=i+1
	   }
       i=1
       combostatus=''
       cstatus=stringa.split("_")
       while (cstatus[i]!=null) {
          combostatus=combostatus+cstatus[i]
          i=i+1
          }
       return combostatus;
    }
}


</script>

  
  
  <form>
<table><tr>
  <td width="200">Selecteer 1</td>
<td><select name="combo0" id="combo_0" onChange="change(this);" style="width:200px;">
  <option value="value1">-selecteer-</option>
  <option value="value2">1</option>
  <option value="value3">2</option>
</select></td></tr></table><BR>
<table><tr>
  <td width="200">Selecteer 2</td>
<td>  <select name="combo1" id="combo_1" onChange="change(this)" style="width:200px;">
    <option value="value1">  </option>
  </select></td></tr></table><BR>
<table><tr>
  <td width="200">Selecteer 3</td>
<td>  <select name="combo2" id="combo_2" onChange="change(this);" style="width:200px;">
    <option value="value1">  </option>
  </select></td></tr></table><BR>
<table><tr>
  <td width="200">Selecteer 4</td>
<td>  <select name="combo3" id="combo_3" onChange="change(this);" style="width:200px;">
    <option value="value1">  </option>
    
  </select></td></tr></table><BR>
<table><tr>
  <td width="200">Selecteer 5</td>
<td>  <select name="combo4" id="combo_4" onChange="change(this);" style="width:200px;">
    <option value="value1">  </option>
    
  </select></td></tr></table><BR>

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

Weet iemand hoe ik hier een beschrijving aan kan toevoegen? Het hoeft niet hetzelfde script te blijven als iemand een ander idee heeft, zolang er maar 5 drop down menu's in zitten die aan elkaar gelinkt kunnen worden en tenminste 1 beschrijving (mag ook na iedere drop down menu een beschrijving komen als dat makkelijker is).


2e mogelijkheid:

Dit script heb ik van een vriend van mij gekregen. Deze heeft al de mogelijkheid voor een beschrijving (al wel in een textarea box), maar ik zou niet weten hoe ik hier nog meer gelinkte drop down menu's aan vast kan maken. Deze heeft er twee en ik heb er 5 nodig. Indien het makkelijker is om via deze optie mij te helpen is dat ook prima, vandaar dat ik 'm erbij zet.

Hier is de code:

Code:
<script language="JavaScript">

var num_of_cats = 3; // Aantal categorien
var open_in_newwindow=0; 
var option_array = new Array(num_of_cats);

option_array[0] = new Array("Selecteer eerst categorie"); 

option_array[1] = new Array("-- Selecteer --",
"optie 1",
"optie 2",
"optie 3",
"optie 4");

option_array[2] = new Array("-- Selecteer --",
"optie 1",
"optie 2");


var text_array = new Array(num_of_cats);

text_array[0] = new Array("Hier komt de beschrijving van de eerste box"); 

text_array[1] = new Array("Hier komt de beschrijving van de eerste optie", 
"Hier komt de beschrijving van de tweede optie",
"Hier komt de beschrijving van de derde optie",
"Hier komt de beschrijving van de vierde optie");

text_array[2] = new Array("Hier komt de beschrijving van de eerste optie",
"Hier komt de beschrijving van de tweede optie");

function switch_select()

{
  for (loop = window.document.form_1.select_2.options.length-1; loop > 0; loop--)
  {
    window.document.form_1.select_2.options[loop] = null;
  }
  
  for (loop = 0; loop < option_array[window.document.form_1.select_1.selectedIndex].length; loop++)
  {
    window.document.form_1.select_2.options[loop] = new Option(option_array[window.document.form_1.select_1.selectedIndex][loop]);
  }
  
  window.document.form_1.select_2.selectedIndex = 0;
}

function switch_text()

{
  window.document.form_1.textarea_1.value = text_array[window.document.form_1.select_1.selectedIndex][window.document.form_1.select_2.selectedIndex];
}


function box()

{
  if (window.document.form_1.select_2.selectedIndex == 0)
  {
    alert("Waar ga jij naartoe?");
  } else {
    if (open_in_newwindow==1)
    window.open(url_array[window.document.form_1.select_1.selectedIndex][window.document.form_1.select_2.selectedIndex],"_blank");
    else
    window.location=url_array[window.document.form_1.select_1.selectedIndex][window.document.form_1.select_2.selectedIndex]
  }
}

function set_orig()

{
  window.document.form_1.select_1.selectedIndex = 0;
  window.document.form_1.select_2.selectedIndex = 0;
}

window.onload=set_orig

// -->
</script>


<form name="form_1" onSubmit="return false;">
  <p>
  <table><tr>
  <td width="200">Selecteer categorie</td>
<td>
    <select name="select_1" style="width:450px" onChange="switch_select(); switch_text();">
      <option>-- Selecteer --</option>
      <option>Optie 1</option>
      <option>Optie 2</option>
      <option>Optie 3</option>
      <option>Optie 4</option>
    </select></td></tr></table>
  <table><tr>
  <td width="200">Selecteer opties</td>
<td>
    <select name="select_2" style="width:450px" onChange="switch_select(); switch_text();">
      <option>-- Selecteer --</option>
      <option> </option>
      <option> </option>
    </select></td></tr></table>
  </p>
  <p>
    <textarea WRAP="virtual" name="textarea_1" rows=10 cols=80>Hier komt de standaard beschrijving van de textarea box.</textarea>
  </p>
</form>


Ik ben hier al maanden mee bezig, maar niemand kan mij verder helpen, dus hoop heel erg dat hier iemand is die mij wel kan helpen!

Alvast heel erg bedankt!
 
Wat ze hier op het helpmij forum hebben gedaan is simpelweg een titel toevoegen aan de td's van de tabel. Misschien is dit een suggestie.
onmouseover events zijn natuurlijk ook nog een optie.
 
Ik kan wel even wat lopen *****n, maar hoor eerst deze punten eens:
1. Javascript menu's zijn een Slecht Idee. Niet alleen breekt je site als men het uit heeft staan, maar mensen zonder JS (screenreaders van slechtzienden bv.) zien ook helemaal niets
2. Preformance: iedere keer moet het hele script weer worden uigevoerd voordat je site geladen is.
3. Overkill: het kost in Javascript veel meer 'code ruimte' (meer code voor zelfde effect)​
Nu, waarom het 1e script een slecht idee is:
1. geen var om variabelen te maken
2. eval() functie waar totaal niet nodig
3. code overkill (dom manipulatie iemand?)​
script nummer 2 is al wat beter qua code. Ik neem aan dat je het kan uitbreiden door de arrays te vullen, in de[JS]option_array[]
//en
text_array[][/JS]


Een dropdown menu met beschrijving is veel makkelijker te maken met wat CSS in combi met Javascript. Zoek daarvoor eens op pure css dropdown menu oid. Een beschrijving kan je maken door de <li>'s in de html een hover-event te geven, zoiets:
[JS]//bind de li-hover aan deze functie:

function()
{
document.getElementById('descText').innerHTML = this.title;
}[/JS]waar de li's zoiets zijn:
HTML:
<li title='dit is een beschrijving van de home-link'>
   <a href='locatie/'>Home</a>
</li>


:thumb:
 
Bedankt voor je reactie. Al moet ik wel zeggen dat dit niet het hoofdmenu wordt van de site. Die is namelijk zonder javascript. Dit wordt een menutje om verschillende producten weer te geven, waarna mensen een aantal keuzes moeten maken uit opties om tot het juiste product te komen en de daarbij behorende beschrijvingen. Dit menutje zal alleen op een paar desbetreffende pagina's verschijnen en is juist bedoeld om volledig doorheen te moeten lopen, zodat mensen de keuze's maken.

In feite heeft dit menutje niets te maken met de hoofdmenu's van de site, maar is meer bedoeld als extra sorteer menutje om een aantal zaken weer te geven. Als ze dan javascript hebben uit staan, zouden ze contact met mij moeten opnemen voor de desbetreffende informatie. Dit breekt niet de hele site.

Script 1 vond ik zelf ook niet handig omdat er zoveel code nodig is om aan te geven wat welke optie is en het dus niet gemakkelijk is om aan te passen. Script 2 vond ik zelf veel handiger en je kan gemakkelijk aangeven of je meer opties wil hebben. In een voorbeeld scriptje had ik in het eerste drop down menutje al 18 opties, lol.

Ik kan daar dus wel meer opties voor het eerst een tweede drop down menutje aangeven (zoveel als ik wil), maar ik krijg daar niet een derde dropdown menu aan gelinkt. Had al geprobeerd het script gedeelte uit te breiden en overal waar 'select_1' staat te wijzigen naar 'select_2' enzo, maar dan werkt de link van het eerste drop down menu naar het tweede niet meer en dus het hele script niet meer. Ook de teksten worden dan niet meer weergegeven.

Ik heb gekeken naar pure css dropdown menu's, maar dat is niet helemaal wat ik bedoel. Je moet het niet zo zien als een menu, maar meer een sorteer lijst. Het is echt de bedoeling dat mensen in het eerste drop down boxje een optie selecteren waarna er opties in het tweede drop down boxje verschijnen. Het is niet de bedoeling dat deze opties een link worden en dat mensen dus worden doorgelinkt naar een andere pagina.

En ik heb geen <li>'s in mijn scripts zitten, alleen <option>'s. Kan daar hetzelfde mee?

Hoop dat je nu iets meer begrijpt wat ik bedoel.
 
Ah, op die manier. Nu, dat valt best mee. Het enige probleem is dat je een erg groot script krijgt; de 1e select is enkel, de tweede dubbel, de 3e driedubbel. Dit komt omdat de 3e dus voor elke select in de 2e een item moet hebben. In Javascript:[JS]var dd1 = ['eerste', 'tweede', 'derde'];


var dd2 = [
['eerste-een', 'eerste-twee', 'eerste-drie'],
['tweede-een', 'tweede-twee', 'tweede-drie'],
['derde-een', 'derde-twee' , 'derde-drie']
];


var dd3 = [
['eerste-een-1', 'eerste-een-2', 'eerste-een-3'],
['eerste-twee-1', 'eerste-twee-2', 'eerste-twee-3'],
['eerste-drie-1', 'eerste-drie-2', 'eerste-drie-3'],

['tweede-een-1', 'tweede-een-2', 'tweede-een-3'],
['tweede-twee-1', 'tweede-twee-2', 'tweede-twee-3'],
['tweede-drie-1', 'tweede-drie-2', 'tweede-drie-3'],

['derde-een-1', 'derde-een-2', 'derde-een-3'],
['derde-twee-1', 'derde-twee-2', 'derde-twee-3'],
['derde-drie-1', 'derde-drie-2', 'derde-drie-3']
];[/JS], en dan moet er ook nog eens een script komen dat deze allemaal uitspuugt en 'berekent'. Vandaar dat meestal een database wordt gebruikt om gegevens uit te halen.

zie eens:

ik heb nu niet zo heel veel tijd, anders zou ik snel een voorbeeld in elkaar draaien, maar mischien kan het morgen wel. In de tussentijd raad ik je aan om eens de links hierboven te checken en kijken of je het een beetje snapt. En natuurlijk lekker zelf knutselen!


:thumb:


Als je googeld op 'javascript dynamic
 
OKay...... dus als ik het goed begrijp.... moet alles honderdmaal dubbel...
Aangezien de eerste optie 19 items moet gaan bevatten en ik 5 drop down menu's moet hebben. En dan heb ik het nog niet eens over de 5-10 items per catagorie-optie.

Eigenlijk ook wel logisch, want dat zijn ook alle items die ik moet gaan toevoegen.

Drop Down Box (vanaf nu noem ik die DDB) 1 gaat alle producten bevatten (19 stuks), en per product komen in DDB 2 de verschillende afmetingen....en per product, per afmeting komen in DDB 3 de verschillende opdrukken..... en per product, per afmeting, per opdrukking, komen in DDB 4 de materiaalsoorten..... en per product, per afmeting, per opdrukking, per materiaalsoort komen in DDB 5 de afwerkingen. Tenslotte komen per product, per afmeting, per opdrukking, per materiaalsoort, per afwerking de prijzen (niet in DDB, maar in tekstgedeelde, wordt nl een tabel).

Kan ook in database (heb MySQL en redelijk verstand van), alleen weet ik niet hoe ik dat script moet maken.

Maakt mij niet uit welke weg ik insla om dit te creeren, als het eindresultaat maar is wat ik wil! lol

Ik zal die links enzo nog eens nakijken of ik daar nog uit kom. Maar aangezien ik er al maanden mee bezig ben, vrees ik het ergste.

Mocht ik ineens 'het licht zien', dan plaats ik nog een 'edit' bericht hier zo snel mogelijk uiteraard. Maar denk het niet, heb al ontzettend veel sites bekeken.

Heel erg thx dat je me wilt helpen!
 
Eigenlijk ook wel logisch, want dat zijn ook alle items die ik moet gaan toevoegen.
yup, je moet je voorstellen dat je het eens even uittekent. Je begint met 1 product, die heeft x andere delen. Dus voor elk product moet x andere delen worden opgeslagen.

tenzij
elk onderdeel dezelfde maten, opdruk en materiaal heeft. Dan wordt het een stuk makkelijker. Daarnaast moet dan OOK de prijs voor elk materiaal/opdruk/maat hetzelfde zijn. De prijs per product kan dan uiteraard wel verschillend.


:thumb:
 
Helaas, misschien dat bij 1 product de specificaties hetzelfde zijn, maar dat zou toeval zijn. Dus ik weet dat ik een heel groot script krijg. Is niet erg. En als je mij helpt aan dat script hoef jij ook niet alles uit te werken hoor, zolang ik maar begrijp hoe ik verder moet!
Thx!
 
Hmm, ik ben geen php/database expert, maar dit lijkt me het meest logisch om al die data op te slaan:

tabel: product
Code:
id (int)
naam (text)
... (...)
tabel: materiaal
Code:
id (int)
naam (text)
... (...)
etcetera, hetzelfde voor alle andere data (afmeting, opdruk, etc). Gewoon alles erin zetten. Daarna maak je de volgende tabel:

tabel: productMateriaal
Code:
productID (int)
materiaalID (int)
en dat voor alle mogelijkheden. Hetzelfde geld dan voor product/afmeting en product/opdruk.


Tenminste, als dat logisch is; als voor 1 product bij alle materialen dezelfde opdruk kan hebben... zoniet, wordt alles een stuk ingewikkelder. Daarnaast is het mischien wel makkelijker om het in 'pure' javascript te doen, maar dat ligt dus een beetje van het antwoord van je vraag af.


:thumb:
 
Ik denk eigenlijk niet dat het veel makkeliker is om alles in een database te zetten. alle specificaties voor alle producten zijn allemaal verschillend. Dus dan heb ik tig gegevens in tabellen in die database, schiet ook niet echt veel op. Denk eigenlijk dat het dan makkelijker is om malles in een script te gooien. Ook al wordt dat script dan erg groot. Een database is vooral makkelijk om verschillende dingen met elkaar te combineren (als verschillende items hetzelfde zijn enzo, om geen dubbele gegevens te hoeven neerzetten), maar dat heb ik niet, dus moet alles zowieso uitgesplitst worden.

Denk je niet? Weet je wel hoe we het script kunnen aanpassen om dat te maken zonder sql, maar met javascript?
 
Heeft iemand nog een idee voor een script zoals hierboven genoemd?

Het script moet de volgende elementen bevatten:
- een select opties script met 5 select boxen
- afhankelijke opties (iedere volgende set met opties is afhankelijk van de vorige gekozen optie en bevatten allemaal andere gegevens)
- na iedere select box moet een mogelijkheid zijn om PER OPTIE een beschrijving weer te laten geven (automatisch na het selecteren van de optie) en hierin moet het mogelijk zijn om een tabel in te voegen
- Het liefst heb ik zelfs dat de volgende set met opties pas verschijnt nadat een keuze is gemaakt uit een van de opties uit de laatste select box, maar als je me alleen verder kunt helpen met de andere opties en deze niet ben ik ook al erg blij!!

Ik ben hier al maanden mee bezig en ik kom er zelf niet meer uit, iedere hulp is zeer welkom!! :)

Thx!
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan