webForumDet fria alternativet

Infoga text från en popup till en annan

JavaScript

7 svar · 317 visningar · startad av speedy

Medlem sedan dec. 200283 inlägg
Frågan#1

Jag har två stycken popuprutor där den ena skall kunna infoga text i ett textfält som finns i den andra.

Tidigare har jag använt denna kod för att infoga text i textfält på samma sida:

 
  function InsertText( text )
  {
    var TextArea = document.frmFormularnamn.txtTextFalt;
    if (TextArea)
    {
      TextArea.value += text + "";
      TextArea.focus();
    }
    return false;
  }

Jag har försökt att anpassa detta script men jag har inte lyckats att få det att fungera. Har ni några tips?

Medlem sedan juni 20004 308 inlägg
#2

Ett exempel:

// Öppna ett fönster
var wina = window.open("","","width=300,height=300,left=0");
wina.document.open();
wina.document.write("<html><body><form name=\"myform\"><input type=\"text\" name=\"mytext\"></form></body></html>");
wina.document.close();

// Öppna ett fönster till
var winb = window.open("","","width=300,height=300,left=350");
winb.document.open();
winb.document.write("<html><body><a href=\"#\" onClick=\"window.opener.wina.document.myform.mytext.value='bla bla';\">Do it!</a></form></body></html>");
winb.document.close();

Svaret är alltså;

window.opener.fönsterreferens.document.formulärsnamn.fältnamn.value='bla bla';

Medlem sedan dec. 200283 inlägg
#3

Jag trodde man angav vilken referens ett fönster skulle ha genom att ange det i open("fonster.html", <b>"minreferens"</b>, "egenskaper") ...

Ditt sätt att skriva det på kan bli svårt eftersom öppnandet av fönstret och skrivandet av texten ligger i olika funktioner.

Jag har testat följande kod:

  var win

  function openWindow(url) 
  {
    win = window.open(url, 'admin', 'width=700,height=600,menubar=0,status=1,scrollbars=1')
  }
  function InsertText( text )
  { 
    var TextArea = window.opener.win.document.frmNews.txtNewsText;
    if (TextArea)
    {
      TextArea.value += text + "";
      TextArea.focus();
    }
    return false;
  }

När jag testat det får jag bara medelande om att referensen till fönstret är null eller inget objekt.

Det konstiga är att jag använde motsvarande kod direkt ifrån fönstret där texten skall infogas och då fungerade det.

Medlem sedan juli 2003303 inlägg
#4

Eftersom du har gjort en global funktion så blir det fel när du använder window.opener. Ta bort det.

Medlem sedan dec. 200283 inlägg
#5

tryckte visst enter för tidigt

Medlem sedan dec. 200283 inlägg
#6

Tyvärr har jag inte fått det att funka än :/ .

Jag ska försöka beskriva vad jag försöker göra lite tydligare:

Jag har en sida som innehåller följande javascript kopplat till en knapp

  var win

  function openWindow(url) 
  {
    win = window.open(url, 'admin', 'width=700,height=600,menubar=0,status=1,scrollbars=1')
  }

När jag trycker på denna knapp kommer min första popup fram. Där finns ett formulär där man fyller i en nyhetstext. Sedan skall man kunna infoga bilder också varför det finns ytterligare en knapp som öppnar ett till fönster med alla bilderna listade.

den andra popuppen öppnas med:

  var fileWin
		
  function openFileWindow(url) 
 {
  fileWin = window.open(url, '', 'width=350,height=400,menubar=0,status=1,scrollbars=1')
  }

Mitt problem är att från min andra popup kunna infoga en text i formuläret i min första popup. Koden för detta ser i nuläget ut så här:

  function InsertText( text )
  {					
  var TextArea = win.document.frmNews.txtNewsText 
  if (TextArea)
  {
  TextArea.value += text + "";
  TextArea.focus();
  }
  return false;
  }

Det felemedelande jag får är alltså att "win" är odefinierat. Om jag istället använder "window.opener.win.document" som referens så får jag meddelande om att det är null eller inte är ett objekt.

Medlem sedan juni 20004 308 inlägg
#7

Jaha, trodde att båda popuperna öppnades från samma sida. Men förloppet är alltså att sidan öppnar en popup som i sin tur öppnar en till...

Men, du använder fortfarande window.opener för att referera till "moderfönstret", alltså det fönster som öppnade fönstret i fråga.

var TextArea = window.opener.document.frmNews.txtNewsText;

Förutsatt att formuläret heter "frmNews" och fältet "txtNewsText"

Kuriosa: win är inte definierad eftersom den härstammar i ett annat fönster och därmed en annan namespace. Skulle du kunna använda samma variabler i olika fönster skulle många script krocka eftersom man ofta har flera browserfönster öppna samtidigt.

Medlem sedan dec. 200283 inlägg
#8

Tack så mycket! Det funkar nu!

250 ms totalt · 4 externa anrop · v20260731065814-full.1dc6f849
123 ms — deklarationer (db)
0 ms — hämta statistik (cache)
125 ms — hämta tråd, inlägg och bilagor (db)
116 ms — ändringar (db)