[JavaScript] Frame aansturen via popup

Pagina: 1
Acties:

  • mvddonk
  • Registratie: Mei 2002
  • Laatst online: 09-06 11:47
Ik heb een hoofd pagina met 2 frames: "boven" en "onder"
Nu wil ik via een popup de waardes van een textveld veranderen in het frame: "onder". Om dit te testen heb ik ff het volgende scriptje gemaakt (wat overigens niet werkt):
JavaScript:
1
2
3
function Verander(){
    alert(parent.onder.document.$artikelnr.naam.value);
}

HTML:
1
<body onload="Verander()">


$artikelnr is een formnaam wat door PHP word ingevuld, maar waarom werkt dit niet?

  • DaRace
  • Registratie: Juni 2001
  • Laatst online: 03-10-2023
volgens mij moet je opener gebruiken ipv parent

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 17-08 23:56

Janoz

Moderator Devschuur®

!litemod

Tja, geen ID. Omdat $artikelnr door php wordt bepaald maakt dit nog geen P&W topic. Ik gooi 'm dan ook richting W&G.

In dit soort gevallen is het erg belangrijk om niet naar de php-source, maar de gegenereerde source (rechter muisknop -> view source ;) ) te kijken.

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


  • mvddonk
  • Registratie: Mei 2002
  • Laatst online: 09-06 11:47
Dat ik in de HTML source moet kijken snap ik, daar ligt het ook niet aan (des noods maak ik er form[0] van om te testen) maar hij loopt moeilijk te doen over dat parten.onder.document gedoe...
Weet iemand anders geen simpel scriptje om het andere frame aanroepen te testen???

[ Voor 18% gewijzigd door mvddonk op 03-06-2003 13:39 ]


  • McVirusS
  • Registratie: Januari 2000
  • Laatst online: 21-08 10:46
Zoals DaRace al terecht opmerkt... werken met opener... dus:

JavaScript:
1
alert( opener.parent.frames['onder'].document.forms['formnaam'].elements['elementnaam'].value );

Verwijderd

Volgens mij kan je idd alleen met opener tussen de frame waarmee je de popup opent en de popup communiceren.

te laat...

[ Voor 7% gewijzigd door Verwijderd op 03-06-2003 13:49 ]


  • mvddonk
  • Registratie: Mei 2002
  • Laatst online: 09-06 11:47
Het begint er al op te lijken:
JavaScript:
1
alert(opener.parent.frames['onder'].document.forms[0].elements['naam'].value);

Dat werkt wel, maar als ik het zo doe werkt het niet:
JavaScript:
1
alert(opener.parent.frames['onder'].document.forms['$artikelnr'].elements['naam'].value);

De formnaam klopt wel want ik heb het volgende geprobeerd en dat werkte:
JavaScript:
1
2
alert(opener.parent.frames['onder'].document.forms[0].name);
alert('$artikelnr');

Krijg, zoals het hoord, 2 x dezelfde naam (in mijn geval een getal) te zien.

Waarom werkt dat forms['$artikelnr'] niet?

Verwijderd

Je kan een formulier als naam geen getal geven, dan gaat die zoeken in de array forms[].

  • mvddonk
  • Registratie: Mei 2002
  • Laatst online: 09-06 11:47
Verwijderd schreef op 03 June 2003 @ 14:11:
Je kan een formulier als naam geen getal geven, dan gaat die zoeken in de array forms[].
Kut... :? daar is geen oplossing voor anders moet ik heel veel gaan veranderen...??

Btw het getal staat toch tussen de haakjes (' ') dus dan ziet die het toch als een string???

[ Voor 16% gewijzigd door mvddonk op 03-06-2003 14:13 ]


  • McVirusS
  • Registratie: Januari 2000
  • Laatst online: 21-08 10:46
mvddonk schreef op 03 juni 2003 @ 14:12:
[...]

Kut... :? daar is geen oplossing voor anders moet ik heel veel gaan veranderen...??

Btw het getal staat toch tussen de haakjes (' ') dus dan ziet die het toch als een string???
Javascript is wel vies daarmee, maar volgens mij gebruik je namen van formulier alleen in javascript en niet in je serverside code. Dus zet er gewoon een f voor of iets dergelijks :).

Verwijderd

misschien kan je dit proberen, maar dat betwijfel ik:
alert(opener.parent.frames['onder'].document.$artikelnr.elements['naam'].value);

  • mvddonk
  • Registratie: Mei 2002
  • Laatst online: 09-06 11:47
Dat had ik allemaal al geprobeerd, maar als ik er een letter in gooi werkt het wel... beetje jammer, kan ik in PHP die letter er weer uit gaan trekken. F*ck dat javascript man ;) :r

  • McVirusS
  • Registratie: Januari 2000
  • Laatst online: 21-08 10:46
Verwijderd schreef op 03 June 2003 @ 14:19:
misschien kan je dit proberen, maar dat betwijfel ik:
alert(opener.parent.frames['onder'].document.$artikelnr.elements['naam'].value);
NEE! Dat mag niet van mij :), en werkt waarschijnlijk toch niet...

Verwijderd

hehehe, ik probeer hem ook maar te helpen :P

  • McVirusS
  • Registratie: Januari 2000
  • Laatst online: 21-08 10:46
mvddonk schreef op 03 juni 2003 @ 14:20:
Dat had ik allemaal al geprobeerd, maar als ik er een letter in gooi werkt het wel... beetje jammer, kan ik in PHP die letter er weer uit gaan trekken. F*ck dat javascript man ;)
Je kan ook met een naam werken als artikel[1] als veldnaam:


HTML:
1
2
3
4
5
<form method="post" action="post.php" name="frm">
<input type="text" name="artikel[1]" value="tralalalal1">
<input type="text" name="artikel[2]" value="tralalalal2">
<input type="text" name="artikel[3]" value="tralalalal3">
</form>



Die kan je in JS gewoon zo aanspreken:
JavaScript:
1
document.forms['frm'].elements['artikel[1]'].value = "artikel 1";


En in PHP krijg je dan een Array $_POST["artikel"] terug.

PHP:
1
2
3
foreach( $_POST["artikel"] AS $artikelnr => $value ) {
   // doe iets met $artikelnr en $value
}


Hopelijk beetje duidelijk?

[ Voor 3% gewijzigd door McVirusS op 03-06-2003 14:25 ]


  • mvddonk
  • Registratie: Mei 2002
  • Laatst online: 09-06 11:47
Ik heb het al op een andere manier opgelost, hoefde maar 2 regeltjes in PHP toe te voegen (ff een letter bij de cijfercode toegevoegt). Had het gelukkig op zo'n manier geprogrammeerd dat ik de rest niet hoefde te veranderen.
Thanks anyway!
Pagina: 1