Avatar billede The Real Yoda Juniormester
29. september 2005 - 14:59 Der er 26 kommentarer og
1 løsning

Opdatere formfelter

Her er så en af de svære..

jeg har to formfelter. et i hvert sit vindue.
Det ene vindue er åbnet med knap fra det andet.

problemet er så at indholdet af de to formfelter skal være synkront

Dvs at retter man noget i det ene, skal rettelsen ske i det andet også.

Og for at det ikke skal være helt nemt, har jeg ikke mulighed for at sætte onChange, eller nogen andre javascript kommandoer på nogen af tekstfelterne.

det skal altså være en funktion som bliver trickeret enten med tid, eller noget andet.
må gerne kunne kaldes på onLoad.

fidusen er jo så at kun 1 tekstfelt kan være i focus.
og det er dette tekstfelt som skal sende ændringerne til det andet.

er dette helt umuligt ?
Avatar billede Slettet bruger
29. september 2005 - 15:01 #1
Funktionen skal vel kaldes ved onkeypress
Avatar billede The Real Yoda Juniormester
29. september 2005 - 15:06 #2
jamen ville man i så fald ikke binde onkeypress til et af felterne .. ? altså sætte koden på et af felterne ?

i så fald er det ikke en løsning

løsningen skal være i stil med

on every second do following
hvis dette vindue er i fokus, så send data fra dette vindue til feltet i det andet vindue.
hvis dette vindue ikke er i focus, så hent data fra andet vindue til dette vindue.
Avatar billede roenving Novice
29. september 2005 - 15:14 #3
Hvordan åbner du det andet vindue ?-)
Avatar billede Slettet bruger
29. september 2005 - 15:14 #4
Du kan jo lave en funktion i begge vinduer, der hver gang der bliver trykket noget i form1.field1, sender data til form2.field2, og naturligvis også den anden vej rundt.
Avatar billede mm12010 Nybegynder
29. september 2005 - 15:20 #5
hvad med noget i denne stil ?-)

opener-vindue:
window.onblur=function(){if(POPUPVNAVN)POPUPVNAVN.document.FORMNAVN.FELTNAVN.value=document.FORMNAVN.FELTNAVN.value;}

popup-vindue:
window.onblur=function()if(window.opener){document.FORMNAVN.FELTNAVN.value=window.opener.document.FORMNAVN.FELTNAVN.value;}
Avatar billede The Real Yoda Juniormester
29. september 2005 - 15:26 #6
roenwing .. åbner med window.open ( er der andre måder ?)

wicez .. kan ikke lægge noget kode på formfelterne eller formsne.. overhovedet.

mm12010:
Ja, det lyder fint nok ..
men kan du lige give et eksempel på hvor det skal skrives ind henne ?
Avatar billede roenving Novice
29. september 2005 - 15:36 #7
Du indsætter det i den script-blok, hvor du i forvejen har din window.open sådan:

<script type="text/javascript">
var newWin = {'closed':true};

//din åbner-funktion skal så indeholde ca. dette:
function openWin(){
  if(!newWin.closed)
    newWin.close();

  newWin = window.open('...','nytVindue');//osv.
}

window.onblur=function(){
  if(!newWin.closed)
    newWin.document.FORMNAVN.FELTNAVN.value=document.FORMNAVN.FELTNAVN.value;
}
</script>

I popuppen læpgger du bare det andet script i en blok:

<script type="text/javascript">
window.onblur=function(){
  opener.document.FORMNAVN.FELTNAVN.value = document.FORMNAVN.FELTNAVN.value;
}
</script>

-- jeg går ud fra, at du kun bruger dokumentet, som loades i popuppen til det, og så skulle testen for om opener-vinduet være overflødig !-)
Avatar billede The Real Yoda Juniormester
29. september 2005 - 15:37 #8
det skal lige testes efter opvasken.. vender lige tilbage med resultatet
Avatar billede mm12010 Nybegynder
29. september 2005 - 15:50 #9
lige præcis som roenving viser !-)
Avatar billede The Real Yoda Juniormester
29. september 2005 - 16:39 #10
har nu testet, og når jeg blurer siderne får jeg følgende fejl:

i hovesiden
newWin.document.eSourceField.value is null or not an object

i den åbnede side
opener.document.eSourceField.value is null or not an object

og skal måske lige sige at jeg ik har noget form tag på .. og heller ik kan få det..

kunne forestille mig noget med getElementById eller hvad den nu hedder.. men ved ik hvordan den skal bruges :( håber på lidt frisk hjælp :)
Avatar billede The Real Yoda Juniormester
29. september 2005 - 16:41 #11
roenving.. du har forresten ret i at jeg kun bruger popuppen på denne måde så test om opener viduet burde være ligegyldig..

dog ser jeg det som en fed ting hvis popuppen lukkes når man navigere væk fra siden i hovedvinduet
Avatar billede roenving Novice
29. september 2005 - 16:45 #12
Ja, så skal du have fat i id (og så skal felterne have id="eSourceField" !-)

newWin.document.getElementById('eSourceField').value

-- og så kan du indsætte en unload-ting, som gør det:

window.onunload = function(){
  if(!newWin.closed)
    newWin.close();
}
Avatar billede The Real Yoda Juniormester
29. september 2005 - 16:51 #13
Der testes...
Avatar billede The Real Yoda Juniormester
29. september 2005 - 16:58 #14
Ok.. Fejlen består stadig.

Samme fejl.. dog med getElementById('....')

fejlen kommer kun når jeg hopper fra det åbnede vindue til hovedvinduet.
men der kommer så fejlen i begge vinduer.

Unload virker dog fint..

Er det så også muligt at hovedsiden ved når den anden side er lukket igen  ?
Avatar billede roenving Novice
29. september 2005 - 17:00 #15
Det ved den jo, for den tester om det nye vindue er lukket !-)

-- kunne du lægge et link til et eksempel ?-)
Avatar billede The Real Yoda Juniormester
29. september 2005 - 17:05 #16
det har jeg lidt svært ved .. da det er på en lukket side..
og formfeltet er indsat med javascript. såeh .. kan ik ses i koden ..

dermed det eneste kode jeg kan paste er min "fortolkning" af dit eksempel..

åbnet side:
<script type="text/javascript">
window.onblur=function(){
  opener.document.getElementById('eSourceField').value = document.getElementById('eSourceField').value;
}
</script>


hovedside
<script type="text/javascript">
var newWin = {'closed':true};
function openWin(){
  if(!newWin.closed)
    newWin.close();
  newWin = window.open('/includes/fullsreen.html','fullscreen', 'menubar=no,location=no,resizable=yes,scrollbars=yes,status=no,height=1024,width=768');
}
window.onblur=function(){
  if(!newWin.closed)
    newWin.document.getElementById('eSourceField').value=document.getElementById('eSourceField').value;
}
window.onunload = function(){
  if(!newWin.closed)
    newWin.close();
}
</script>

tager jeg forresten fejl, hvis jeg siger jeg mener at det plejer at hedde window.opener......
Avatar billede The Real Yoda Juniormester
29. september 2005 - 17:05 #17
et link forsøg ville være : http://www.comasys.dk/?type=sektion&id=13&action=edit men ved ikke om du får lov at se siden ...
Avatar billede roenving Novice
29. september 2005 - 17:11 #18
Hrm, plejer på window.opener ...

Det _hedder_ window.opener, men da man godt må underforstå window-objektet kan det ikke spille nogen trille !-)

-- medmindre du ellers har et eller andet, som i javascript er navngivet opener, hvilket er særdeles uklogt (hvis du bruger IE vil det også gælde html-elementer som har 'opener' som id !-)

-- og jeg fik ganske rigtigt ikke noget frem, kun en fejlmeddelelse:

FEJL: Siden kunne ikke findes i databasen (doPage)
SELECT * FROM side WHERE id = '1'
Det tog 0 sekunder at generere siden
Avatar billede The Real Yoda Juniormester
29. september 2005 - 17:14 #19
det er en side med FCKeditor hvis du kender den ?

Det er selve editorfeltet jeg vil kopiere, da jeg vil lave en fullscreen funktion til fckeditor
Avatar billede Slettet bruger
29. september 2005 - 17:25 #20
fckeditor bruger en iframe til at vise indholdet i.. det er rimelig kompliceret. -!
Avatar billede The Real Yoda Juniormester
29. september 2005 - 17:28 #21
jamen .. ret mig hvis jeg tager fejl.. men er det ikke kun wysiwyg delen af det der er i en iframe ?.. eller =?

men er da ik source delen er i iframe
Avatar billede roenving Novice
29. september 2005 - 17:29 #22
Hvis det er en iframe, så skal du jo også indflette iframen i adresseringen !-)
Avatar billede The Real Yoda Juniormester
29. september 2005 - 17:30 #23
<tr id="eWysiwyg">
                <td id="eWysiwygCell" height="100%" valign="top">
                    <iframe id="eEditorArea" name="eEditorArea" height="100%" width="100%" frameborder="no" src="fckblank.html"></iframe>
                </td>
            </tr>
            <tr id="eSource" style="DISPLAY: none">
                <td class="Source" height="100%" valign="top">
                    <textarea id="eSourceField" dir="ltr" style="WIDTH: 100%; HEIGHT: 100%"></textarea>
                </td>
            </tr>

kopieret fra fckeditor.. og der ville jeg jo mene at edittorfeltet ikke er en iframe
Avatar billede Slettet bruger
29. september 2005 - 18:05 #24
Prøv at sætte $content-parametret i din fckeditor-klasse.. Så kan du i din vis_kilde se, hvor indholdet bliver sat ind!
Avatar billede The Real Yoda Juniormester
29. september 2005 - 18:07 #25
Den forstod jeg ikke lige ..

kan du forklare den nærmere ?
Avatar billede Slettet bruger
29. september 2005 - 18:30 #26
Jep.. Hvis du bruger php til at udskrive din fckeditor, kan du sætte en indholds-parameter... dvs $fckeditor->create("name", "content", "toolbar");

hvor jeg her gerne vil have dig til at udfylde dit content-parameter.
Avatar billede The Real Yoda Juniormester
18. oktober 2005 - 16:47 #27
tror jeg opgiver dette, og bare venter på at at der kommer en fullscreen editor plugin til FCK editor
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