[Javascript]Problemen met Array keys in een form

Pagina: 1
Acties:

  • Quibus
  • Registratie: November 2000
  • Laatst online: 17-05 17:36
Ik ben bezig om een php applicatie te schrijven waarmee ik een soort portofolio kan beheren. Deze portofolio bestaat uit foto's met een beschrijving. Deze foto's zijn weer onderverdeeld in categorieen. Ik ben op dit moment bezig om het admin gedeelte te schrijven. Ik heb hier echter een probleempje met een Javascript dat ik heb geschreven in de pagina om de categorie naam up te daten. Dat update gedeelte bestaat uit een pulldown box waar in je dan de categorie die je wilt editten selecteerd. Als je een categorie geselecteerd hebt, wordt deze in een textfield ernaast weergegeven. In dit textfield kun je dan de categorie naam aanpassen, waarna je de categorie kunt updaten. Dit wilde ik zo doen om onnodig veel klikken te voorkomen.
Nu is het probleem dat mijn javascriptje niet helemaal goed werkt.
Hier is eerst even de code

in de head tags
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<SCRIPT LANGUAGE="JavaScript">
<!-- Begin

var category = new Array();
category[1] = "Web design";
category[2] = "Graphic design";
category[3] = "Other design";
category[4] = "Photography";
category[12] = "teststat";
category[14] = "aarata";

function setText(field, array_item) {
//if(itemArray != null) {
    field.value = array_item;
    //}
    //else {
    //selectCtrl.value = "";
    //}
}
//  End -->
</script>


in men form

code:
1
2
3
4
5
6
7
8
9
10
11
<select name="select_cat_edit" onChange="setText(this.form.cat_name, ((this.selectedIndex == -1) ? null : category[this.selectedIndex]));">
<option value="-1">Select category to edit
<option value=1>Web design
<option value=2>Graphic design
<option value=3>Other design
<option value=4>Photography
<option value=12>teststat

<option value=14>aarata
</select>
<input type="text" name="cat_name">


Deze categorien worden dus uit de database gehaald en via PHP omgezet in html en de javascript array. Wat nu blijkt is dat de eerste 4 categorieen (value 1 tm 4) perfect werken. Als ik echter een volgende value krijg die niet na de vorige komt (na 4 bijv 12) dan werkt het echter niet. Is die 12 echter een 5 dan werkt het weer wel. in mijn textfield komt undefined te staan als het niet werkt (bij bijvoorbeeld 12).

Ik snap niet wat ik verkeerd doe. De array lijkt te kloppen en category[this.selectedIndex] zou toch gewoon ook moeten werken als er 12 wordt ingevoerd? Ik heb niet echt veel verstand van Javascript, dus misschien is het iets wat gewoon niet zo werkt in Javascript en dat ik daar niets van weet. Weet iemand van jullie wel een oplossing voor mijn probleem?

  • crisp
  • Registratie: Februari 2000
  • Laatst online: 14:55

crisp

Devver

Pixelated

selectedIndex != value

Wat jij wil kan trouwens ook gewoon zo:

HTML:
1
2
3
4
5
6
7
8
9
10
11
<select name="select_cat_edit"
  onchange="this.form.elements['cat_name'].value = (this.selectedIndex == 0 ? '' : this.options[this.selectedIndex].text)">
  <option>Select category to edit</option>
  <option value="1">Web design</option>
  <option value="2">Graphic design</option>
  <option value="3">Other design</option>
  <option value="4">Photography</option>
  <option value="12">teststat</option>
  <option value="14">aarata</option>
</select>
<input type="text" name="cat_name" />

[ Voor 95% gewijzigd door crisp op 22-11-2004 00:29 ]

Intentionally left blank


  • Quibus
  • Registratie: November 2000
  • Laatst online: 17-05 17:36
Je hebt gelijk. Jou manier is een stuk makkelijker. Ik heb die hele array nu helemaal niet meer nodig. Het werkt nu inderdaad goed. Bedankt voor je hulp. Ik moet me toch wat meer in javascript gaan verdiepen want ik kan er nog te weinig mee maken :P