Toon posts:

[js] Scriptje verversen onchange

Pagina: 1
Acties:

Verwijderd

Topicstarter
Hoi! Ik zit enorm te klooien met een stukje code wat een ex-collega heeft geschreven, dus graag jullie hulp!

Ik heb een form met een dropdown en een list; de dropdown haalt een aantal foto-categorieen op uit de database en wanneer een gebruiker een selectie maakt, toont hij deze in een list, met een preview in een image. Nu wil een dropdown toevoegen die de gebruiker in staat stelt om te filteren op mogelijke datum's van opname. Hoe kan ik met een OnChange het scriptje laten draaien dat de gegevens uit de database ophaalt?

ik weet het niet meer.... hieronder mijn code....

HTML:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<SCRIPT LANGUAGE="JavaScript">
function setOptions(chosen) {
var selbox = document.fItemEdit.firstselect;
 
selbox.options.length = 0;
if (chosen == " ") {
  selbox.options[selbox.options.length] = new Option('Selecteer aub een optie hierboven!',' ');
  }

if (chosen == "1") {
<cfoutput query="qFotoCat2">
  selbox.options[selbox.options.length] = new Option('#opmerking_alg#','#fotolocatie#');
</cfoutput>
  }
}
</script>


en de html-kant:

HTML:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
 <select> 
 <cfoutput query="qFotoDate"> 
        <option value="#dateformat(datum, "dd-mm-yyyy")#">#dateformat(datum, 
            "dd-mm-yyyy")#</option>
</cfoutput> 
</select>

<select name="optone" onchange="setOptions(document.fItemEdit.optone.options[document.fItemEdit.optone.selectedIndex].value);">
                    <option value=" " selected="selected"> </option>
                    <cfoutput query="qFotoCat"> 
                      <option value="#fotocat_id#">#omschrijving#</option>
                    </cfoutput> </select> 

<select name="firstselect" size="10" class="style4" onChange="showimage(this)">
                    <option selected="selected" value="spacer.gif">Selecteer een 
                    afbeelding</option>
                  </select> 

<img src="Images/spacer.gif" alt="preview" name="firstpics" width="150"
height="150" id="firstpics">
              
<input name="submit" type="button" onClick="sendText(document.getElementById('firstselect').value, '');" value="Voeg foto toe" />

  • tombo_inc
  • Registratie: December 2004
  • Laatst online: 16-12-2025

tombo_inc

uhuh

je moet dan gewoon in het onchange event van de juiste select lijst, de functie aanroepen die de gegevens uit de DB haalt etc. je kan meerdere statements maken in een eventsetter door ze te scheiden door een puntkomma.

Microsoft Windows: A thirty-two bit extension and graphical shell to a sixteen-bit patch to an eight-bit operating system originally coded for a four-bit microprocessor which was written by a two-bit company that can't stand one bit of competition


Verwijderd

Topicstarter
Hoi, omdat ik niet helemaal 100% snapte wat je bedoelde heb ik dit weekend ook zitten klooien met een scriptje dat de queries opnieuw uitvoerd in een hidden frame, maar nu loop ik tegen een foutmelding aan...

"top.hidden.document is leeg of geen object"...

Dit is mijn code:
JavaScript:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
function getmatches(){
  var Element = document.fItemEdit.Datum;
  var Index = Element.selectedIndex;
  var Value = Element.options[Index].value;


  // gebruiker select categorie
  if (Value == "X"){
    addToSelectUnique(document.fItemEdit.matches, "Categorieen:", "");
    
  // gebruiker selecteert datum:
  }
  else
    {
    top.hidden.document.location = "ActionFiles/actgetdate.cfm?date=" + Value;  
    }
}

Op dit act_getdate.cfm voer ik dan de queries uit...
Ik ben geen held in JS, maar ik zie ff niet in wat er mis is?

  • reddevil
  • Registratie: Februari 2001
  • Laatst online: 06-10-2025
probleem is dat je waarschijnlijk 'hidden' niet als framenaam mag gebruiken omdat het woord al gereserveerd is in HTML

[ Voor 13% gewijzigd door reddevil op 04-09-2006 10:01 ]


Verwijderd

Topicstarter
reddevil schreef op maandag 04 september 2006 @ 10:01:
probleem is dat je waarschijnlijk 'hidden' niet als framenaam mag gebruiken omdat het woord al gereserveerd is in HTML
Goeie tip! Vreemd genoeg gaat ie nu fout op dit stukje:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
function getmatches(){
  var theElement = document.fItemEdit.datum;
  var theIndex = theElement.selectedIndex;
  var theValue = theElement.options[theIndex].value;

  removeAll(document.fItemEdit.optone);

  // gebruiker select hint
  if (theValue == "10-01-1981"){
    addToSelectUnique(document.fItemEdit.optone, "Categorieen", "");
    
  // gebruiker select datum
  }else{
   top.rara.document.location = "actionfiles/act_getdate.cfm?date=" + theValue; 
  }
}


Hij zegt: "options is leeg of geen object", wijzend naar de regel
code:
1
var theValue = theElement.options[theIndex].value;


Ikke nie snap?!

  • reddevil
  • Registratie: Februari 2001
  • Laatst online: 06-10-2025
dat houdt in dat var theElement = document.fItemEdit.datum; een undefined oplevert. In je vorige voorbeeld gebruikte je Datum ipv datum.
Gooi anders een alert op theElement zodat je kan zien of de variable iig gezet wordt.

Verwijderd

Topicstarter
Ok, dat was een super tip! Het werkt nu bijna, op 1 dingetje na...

Een submit button moet nu een waarde uit een iframe (die in een iframe staat) posten.
Dus:

HTML
--iFrame1
-----iFrame2

ik heb deze code op de button op de HTMLpage gezet:
code:
1
onClick="sendText(window.iFrame1.window.iFrame2.document.getElementById('firstselect').value, '');


Maar dit vind ie niet echt lief... ik ben wel aan het zoeken op internet, maar wellicht weet iemand hier het heel snel?

  • reddevil
  • Registratie: Februari 2001
  • Laatst online: 06-10-2025
Verwijderd schreef op woensdag 06 september 2006 @ 13:46:
...
ik heb deze code op de button op de HTMLpage gezet:
code:
1
onClick="sendText(window.iFrame1.window.iFrame2.document.getElementById('firstselect').value, '');


Maar dit vind ie niet echt lief... ik ben wel aan het zoeken op internet, maar wellicht weet iemand hier het heel snel?
als goed is:
code:
1
onClick="sendText(document.iFrame1.iFrame2.document.getElementById('firstselect').value, '');

Verwijderd

Topicstarter
reddevil schreef op woensdag 06 september 2006 @ 13:47:
[...]


als goed is:
code:
1
onClick="sendText(document.iFrame1.iFrame2.document.getElementById('firstselect').value, '');
Hmmm
Als ik die optie gebruik, krijg ik de melding; "object wordt verwacht"
In iFrame2 staat deze code:
code:
1
2
3
4
5
6
7
8
function sendText(img,text) 
{ 
    var content = parent.parent.document.createTextNode(text);
    var plaatje = parent.parent.document.createElement('img');
    plaatje.src = img;
    parent.parent.document.getElementById('oDiv').appendChild(content); 
    parent.parent.document.getElementById('oDiv').appendChild(plaatje); 
}


Die is toch goed?

  • reddevil
  • Registratie: Februari 2001
  • Laatst online: 06-10-2025
nopes, want je sendText functie roep je aan in je huidige document en niet in iframe2.

Je kan beter je sendText aanroep zo laten en dan je functie in het 'hoofdframe' neerzetten en dan
code:
1
2
3
4
5
6
7
8
function sendText(img,text) 
{ 
    var content = document.createTextNode(text);
    var plaatje = document.createElement('img');
    document.iFrame1.iFrame2.plaatje.src = img;
    getElementById('oDiv').appendChild(content); 
    getElementById('oDiv').appendChild(plaatje); 
}


als je toch de functie op die plek wilt laten staan, dan moet je aanroep zoiets zijn als:

code:
1
onClick="document.iFrame1.iFrame2.sendText(document.iFrame1.iFrame2.getElementById('firstselect').value, '');

Verwijderd

Topicstarter
Super de super! Dat is hem!!
Pagina: 1