Avatar billede fiskerendk Nybegynder
20. juni 2004 - 19:43 Der er 8 kommentarer og
1 løsning

Afhængige Dropdowns med array

Hej

Nu har jeg prøvet at få lavet noget i php men det kan kun virke hvis man reloader siden.. Jeg har så fundet og modificeret lidt i et JavaScript som kan lave de forskellige ting som jeg skal bruge dog med en undtagelse jeg kan ikke få den til at smide de rigtige værdi'er videre til en anden side vedhjælp af PHP..
den bruger array id'en istedet for bil modellens navn..

her neden under har jeg pastet de forskellige scripts osv.

test.html vælger man bilmærke, model og årgang.
model.js er der hvor arrayed og selve scriptet er. Det er her fejlen ligger.. Når man vælger de forskellige ting.. så skriver den bilmærket rigtigt og årgangen.. Men model navnet blir kun til det tal som arrayed er..
altså f.eks. 1 istedet for der skulle stå E30.

Siden kan ses her:
http://apache.fiskeren.dyndns.dk/plasmastyle/test/test.html

test.html:
<code>

  <script language="JavaScript" src="model.js"></script>


        <form name="choose_2" method="post" action="order2.php">

            <div>
            <font class="content"><b>Bil M&aelig;rke:</b></font><br>
            <select name="make" class="browseList" onChange="makeChange('choose_2');">
              <option value="error" selected="selected">V&aelig;lg</option>
              <option value="BMW">BMW</option>
              <option value="VW">VW</option>
            </select>
            </div>

            <div>
            <font class="content"><b>Model:</b></font><br>
            <select name="model" class="browseList" onChange="modelChange('choose_2');">
              <option value="error" selected="selected">V&aelig;lg</option>
            </select>
            </div>

            <div>
            <font class="content"><b>&Aring;rgang:</b></font><br>
            <select name="year" class="browseList" onChange="yearChange('choose_2');">
              <option value="error" selected="selected">V&aelig;lg</option>
            </select>
            </div>

        <input type=image src=../data/ordertxt_1.gif name="Action" type="submit" value="Send" style="width:200;border:0px;">

        <script>
        document.forms.choose_2.model.disabled = true;
        document.forms.choose_2.year.disabled = true;
        </script>

        </form>
</code>

model.js
<code>
  var openMenu = "";
   
  var v = new Array();   
  v[v.length] = Array(1,'BMW','E30','1985','1992');
  v[v.length] = Array(2,'BMW','E34','1988','1994');
  v[v.length] = Array(3,'BMW','E36','1992','1995');
  v[v.length] = Array(4,'BMW','E46','1999','2003');
  v[v.length] = Array(504,'VW','Golf III','1999','2003');

  var myMake = "";
  var myModel = "";
  var myYr = "";
       
  function makeChange(choose_form) {
    if (!choose_form) { choose_form = "choose"; }
       
    var make = eval("document.forms." +choose_form+ ".make");
    var model = eval("document.forms." +choose_form+ ".model");
    var yr = eval("document.forms." +choose_form+ ".year");
   
    myMake = "";
    myModel = "";
    myYr = "";
    if (make) {
      if (make.value!='') {
      model.disabled = false;
      model.options.length = 1;
      model.options[0] = new Option('Vælg','');
      for (i=0; i<=v.length-1;i++) {           
        if (v[i][1] == make.value) {
        model.options[model.options.length] = new Option(v[i][2],v[i][0]);
        }
      }
    }
    }   
  }   
       
  function modelChange(choose_form, selected) {
    if (!choose_form) { choose_form = "choose"; }

    var model = eval("document.forms." +choose_form+ ".model");
    var yr = eval("document.forms." +choose_form+ ".year");

    var yr1 = 0;
    var yr2 = 0;
    var count = 0;
   
      if (model && yr) {
      yr.disabled = false;
      for (i=0; i<=v.length-1;i++) {           

        if (v[i][0] == model.value) {               
        yr1 = v[i][3];
        yr2 = v[i][4];                           
        }
      }
      yr.options.length = 1;       
      yr.options[0] = new Option('Vælg','');
      for (i=yr2;i>=yr1;i--) {
      yr.options[yr.options.length] = new Option(i,i);
      }
      }
  }
       
  function yearChange(choose_form, v) {
    if (!choose_form) { choose_form = "choose"; }
  }

  function showChooseCar() {
    var obj = getObject('changeCar');
    obj.style.display = 'none';
    var obj = getObject('chooseCar');
    obj.style.display = '';
  }
</code>
Avatar billede roenving Novice
20. juni 2004 - 19:51 #1
model.options[model.options.length] = new Option(v[i][2],v[i][2]);
Avatar billede fiskerendk Nybegynder
20. juni 2004 - 19:55 #2
når det er på så vises årgangne slet ikke i year dropdown menu'en! men det rigtige navn står så når man går videre! har nemtlig prøvet den.. men hvis du så kan hjælpe med det andet ville det være godt
Avatar billede roenving Novice
20. juni 2004 - 19:57 #3
if (v[i][2] == model.value) {
Avatar billede fiskerendk Nybegynder
20. juni 2004 - 20:51 #4
nu kan man slet ikke vælge model.
Avatar billede roenving Novice
20. juni 2004 - 20:56 #5
Virker udmærket for mig:

  function makeChange(choose_form) {
    if (!choose_form) { choose_form = "choose"; }
       
    var make = eval("document.forms." +choose_form+ ".make");
    var model = eval("document.forms." +choose_form+ ".model");
    var yr = eval("document.forms." +choose_form+ ".year");
   
    myMake = "";
    myModel = "";
    myYr = "";
    if (make) {
      if (make.value!='') {
      model.disabled = false;
      model.options.length = 1;
      model.options[0] = new Option('Vælg','');
      for (i=0; i<=v.length-1;i++) {           
        if (v[i][1] == make.value) {
        model.options[model.options.length] = new Option(v[i][2],v[i][2]);
        }
      }
    }
    }   
  }   
       
  function modelChange(choose_form, selected) {
    if (!choose_form) { choose_form = "choose"; }

    var model = eval("document.forms." +choose_form+ ".model");
    var yr = eval("document.forms." +choose_form+ ".year");

    var yr1 = 0;
    var yr2 = 0;
    var count = 0;
   
      if (model && yr) {
      yr.disabled = false;
      for (i=0; i<=v.length-1;i++) {           

        if (v[i][2] == model.value) {               
        yr1 = v[i][3];
        yr2 = v[i][4];                           
        }
      }
      yr.options.length = 1;       
      yr.options[0] = new Option('Vælg','');
      for (i=yr2;i>=yr1;i--) {
      yr.options[yr.options.length] = new Option(i,i);
      }
      }
  }
Avatar billede fiskerendk Nybegynder
20. juni 2004 - 20:57 #6
takker nu virker det
smid lige et svar..
Avatar billede roenving Novice
20. juni 2004 - 21:00 #7
Velbekomme '-)
Avatar billede roenving Novice
20. juni 2004 - 21:09 #8
-- og tak for point ;~}
Avatar billede fiskerendk Nybegynder
20. juni 2004 - 21:10 #9
du har jo fortjent dem :D
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