Avatar billede mikkel_breum Nybegynder
24. marts 2002 - 22:19 Der er 14 kommentarer og
2 løsninger

Dynamisk opdaterede inputfelter glemmes

Hejsa eksperter!

Jeg har et problem med at få variabler sendt afsted hvis disse er baseret på inputfelter der er genereret dynamisk.

Problemet kan ses på følgende side:

www.turnus.nu/problem

Der er to menuer. Den nederste påvirkes dynamisk af den øverste.

Der er to knapper: "test" og "Næste"
"Test" bringer en alert der angiver værdien af menu nummer to.
Prøv at klikke på test.
Prøv derefter at ændre i øverste menu, og klik igen på test
Dette resultatet viser, at den nederste menu er blevet ændret, og at man via javascript kan få adgang til de opdaterede data..

Nu til prøblemet:
Hvis man klikker på knappen "Næste" sendes formfelterne med metode POST til et simpelt php script der blot udskriver verdien af den nederste menu.. dette ser således ud:


<html><head></head><body>
V&aelig;rdien af bogstavsmenuen var: 
<?php
print(" $S2");
?>
</body></html>

Problemet er at jeg KUN kan få data igennem til denne side hvis jeg IKKE har rørt ved den øverste menu inden jeg sender.

Det vil sige at så snart der er blevet manipuleret med min nederste menu "S2" via javascript, så er det som om den falder ud af min FormContainer, den sendes ikke længere afsted..

Hvordan kan dette problem løses?

Kig på soursekoden på de to sider.

mange håb på et intelligent svar fra en med det sorte bælte i javascript..
mange point!!

mikkel
Avatar billede jakoba Nybegynder
24. marts 2002 - 22:30 #1
beklager, men det hele virker fint for mig :(
  "Værdien af bogstavsmenuen var: h"
ned IE4

I NS4 og Opera går din dog galt med din innerHTML=  måde at udskifte options i den nederste select.

mvh JakobA
Avatar billede jakoba Nybegynder
24. marts 2002 - 22:34 #2
NS6 gor det også korrekt.
Hvad browser bruger du?
Avatar billede mikkel_breum Nybegynder
24. marts 2002 - 22:39 #3
Jeg bruger IE 5.1 under OSX (mac), men jeg tester lige på lidt andre browsere/platforme..

Det som ikke virker er denne case:
1) jeg laver en ændring i øverste menu
2) jeg trykker "næste"
3) resultatet er at værdien af $S2 er tom så php scriptet printer ikke nogen værdi ud.. men nu tester jeg lige på pc og i netscape.. så vnder jeg tilbage
Avatar billede mikkel_breum Nybegynder
24. marts 2002 - 22:49 #4
ja.. det virker jo.. Under netscape på Mac, og begge steder på PC.. Død og kritte hvor er jeg træt af alle de kompatibilitetsproblemer..

Men er der nogen der har alternative løsningsforslag?
Det skal siges at dette er en forsimplet version af mit problem, og grunden til at jag valgte at uskifte hele select blokken ved et div.innerHTML hack er at det var det mest overskuelige for mig, da jeg har rigtigt maget data, som jeg henter fra en database..

Skal jeg hellere opbygge menuen på denne måde (taget lidt ud af kontekst, men I kan se idéen):

menuObj.options.length = 0;
for(i=0 ; i < steder[n].length ; i++) {
menuObj.options[menuObj.options.length] = new Option (steder[n][i],steder[n][i]);
}
Avatar billede mikkel_breum Nybegynder
24. marts 2002 - 22:50 #5
Jeg skal have det til at virke under både Win, Mac OS 9 og OS X :(

.. og til EI samt NS .. det er altid et helvede at finde lige den smalle sti der fungerer overalt..
Avatar billede jakoba Nybegynder
24. marts 2002 - 22:51 #6
også med de instrukser virker det fint i IE4 og NS6 på PC.

prøv evt at sætte selected på nr 2 eller 3 af valgmulighederne, så kan vi se direkte om den bliver 'adlydt'

Men jeg ville nu ombygge selecten med javascript. det fylder mere, men så virker det ogå i NS4 og Opera (og måske endda på Mac:-)
Avatar billede olebole Juniormester
24. marts 2002 - 22:55 #7
<ole>
Det er formodentlig din uortodokse metode til opdatering af en select-box, der giver problemer.
I øvrigt er din 'findObj()' forældet. Ikke at den giver problemer i dette tilfælde, men du vil støde ind i snavs i forbindelse med frames.
/mvh
</bole>
Avatar billede jakoba Nybegynder
24. marts 2002 - 23:19 #8
her kan du se eksempler på diverse manipualtion af en select. Hvid set duer på mac er det måske væred at kopiere.
http://hjem.get2net.dk/Jakob.Aggernaes/temp/exp66097.html

her får en selctboks nyt indhold:
http://hjem.get2net.dk/Jakob.Aggernaes/temp/exp107085.html
lidt mere det samme som du ønsker.

mvh JakobA
Avatar billede mikkel_breum Nybegynder
25. marts 2002 - 09:52 #9
ole.svar(){
echo"

ok.. tak for tippet, hvis du har en bedre findObjectMethod() må du gerne paste den ind her..

Jeg ved godt at det er en utraditionel metode at udskifte hele selectblokken på den måde jeg gør det.. Jeg er autodidakt, så jeg har ikke så meget viden om retningslinierne for gode vs. dårlige kode generelt.. Kan man sige at det er en 'dårlig'/uhensigtsmæssig måde jeg gør det på? (hvis ikke lige det var fordi det ikke fungere på en bestemt browser på mac)...

mikkel

";
}
Avatar billede mikkel_breum Nybegynder
25. marts 2002 - 09:53 #10
til Jakoba... vil du have point?
Avatar billede mikkel_breum Nybegynder
25. marts 2002 - 09:54 #11
olebole... du kan også få nogle.. send evt en bedre findObject funktion :)
Avatar billede olebole Juniormester
25. marts 2002 - 11:55 #12
Du kommer sikkert længere med dit eget forslag fra tidligere (det med 'new Option()').  Det er en mere 'korrekt' måde at opdatere en select på og vil formodentlig også afvikle en anelse hurtigere ... ingen garantier, men en fornemmelse (det kunne ligne jakoba at være mand for en test)  ;o)

Vedrørende en nyere version af MM_findObj(), så anvender jeg ikke selv DreamWeaver, men den nyeste version en hurtig søgning på Google gav, var:

function MM_findObj(n, d) { //v4.01
  var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
    d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
  if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
  for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
  if(!x && d.getElementById) x=d.getElementById(n); return x;
}

...som umiddelbart ser ud til at have overvundet NS6/frames-problematikken  ;o)
/mvh
Avatar billede olebole Juniormester
25. marts 2002 - 11:55 #13
nå ja  :)
Avatar billede mikkel_breum Nybegynder
25. marts 2002 - 18:36 #14
tak.. jakoba hvis du svarer kan jeg fordele point..
Avatar billede mikkel_breum Nybegynder
25. marts 2002 - 22:39 #15
tak.. jakoba hvis du svarer kan jeg fordele point..
Avatar billede jakoba Nybegynder
29. marts 2002 - 13:56 #16
Ups. undskyld forsinkelsen.
svaret er 42.

mvh JakobA
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