16. november 2005 - 10:03Der er
24 kommentarer og 1 løsning
Luk vindue og ændre input
Hey,
Jeg mangler javascript funktionen, der kan ændre noget i et andet vindue. F.eks. i ens netbank eller bestillings sider, hvor man kan poppe en kalender op i et nyt vindue. Efter man har fundet datoen og trykket på den, lukker den calenderen og overfører datoen til ens <input>. Lige præcis den funktion leder jeg efter at beherske, men har ike kunne finde den i diveres kalender scripts.
Du kan med window.opener få fat i det vindue som åbnede vinduet selv. Med den information i hånden, er det bare et spørgsmål om at finde en metode til at identificere den kontrol som skal have værdien du vælger i det aktuelle vindue...
Ja, ok - det er jo ikke fordi det er strengt nødvendigt at overføre this til den funktion som eksemplet er udformet her, men det kunne være at du f.eks. ville bruge id-attributten på linket til at identificere hvilken værdi der skulle sendes med tilbage til formularfeltet... eller sådan noget... og så er det jo godt nok at vide hvilket element der sender eventet :)
elementet eksistere ikke melder den. Og jeg tror ikke selv den forstår at smide den tilbage i henholdevis vare[1] eller vare[2] alt efter hvad der åbner vinduet.
Som du måske har opdaget, så er jeg ikke PHP-kyndig, så du må bære over med mit forsøg på at kode PHP i funktionen selectAndClose, men det jeg gerne vil illustrere er at du skal overføre endnu en parameter i querystring, som angiver hvilket indeks værdien skal indsættes i. Dette indeks genereres ind i siden når den vises (og vil derfor være en konstant hvis du viser kildekode i browseren).
Du laver tilsyneladende en slags redirect over index.php, så den parameter jeg sender med til index.php, der hedder idx, skal altså føres med videre til test2.php - håber du forstår hvad jeg mener :)
yes, jeg er helt med på din løsning. Jeg er php mand, så den del skal jeg nok klar. Mit store problem igår var det +sel du har skrevet. Det er så måde man skriver en variabel i en streng i javascript. Så er jeg blevet det klogere :)
Denne linie tror jeg er mere korrekt. window.opener.forms['oversigt'].elements['vare[<?php $_GET['idx']?>]'].value = val;
Har desværre ingen internet derhjemme før onsdag igen. Og sidder på uni nu, så kan desværre ikke lige teste det nu.
Det er nogenlunde samme måde at håndtere arrays i javascript, men i og med at jeg har valgt at kalde felterne det samme (dvs. vare[]), så dannes der et "controlarray", hvilket betyder at jeg skal indeksere array-elementet for at få fat i det rigtige felt...
Nu har jeg lige prøvet at gå tilbage til ren HTML og er kommet frem til denne løsning som fungerer. Jeg har et hovedvindue (default.htm) og en popup (popup.htm).
Konklusion: ----------- Det må være window.opener.document.forms['oversigt'] kombineret med at formularen har NAME-attribute i stedet for en ID-attribut som indeholder teksten oversigt, der finder formularen på hovedvinduet.
default.htm ------------ <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>Hovedvindue - Varer</title> <script type="text/javascript"> <!-- function findvare(sel){ window.open('popup.htm?vis=test2&idx='+sel, 'findvare'); } // --> </script> </head> <body>
Ja, ok, men jeg kan bare ikke helt forstå hvorfor det skulle være et problem at indsætte PHP-kode i scriptet... men der er jo så meget jeg ikke forstår :)
Tak for point :)
Synes godt om
Ny brugerNybegynder
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.