Popup geeft waarde niet door
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
2
3
4
5
6
7
8
9
10
11
12
13
<script type="text/javascript" src="functions/jscripts/tiny_mce/tiny_mce.js"></script>
//de rest van tiny mce
<script type="text/javascript">
function test() {
window.open('pop.html','','toolbar=0,scrollbars=1,resizable=0');
}
</script>
<form name="form" method="post" action="">
<textarea name="tekst"></textarea>
<input type="button" value="klik" onclick="test()" />
</form>
//de rest van tiny mce
<script type="text/javascript">
function test() {
window.open('pop.html','','toolbar=0,scrollbars=1,resizable=0');
}
</script>
<form name="form" method="post" action="">
<textarea name="tekst"></textarea>
<input type="button" value="klik" onclick="test()" />
</form>
Popup:
Code (php)
1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
<script type="text/javascript">
function test() {
window.opener.document.forms['form'].elements['tekst'].value = 'blaat';
}
</script>
<form name="form1" method="post" action="dummy.html">
<textarea name="textfield">test tekst</textarea>
<input type="button" value="klik" onclick="test()" />
</form>
function test() {
window.opener.document.forms['form'].elements['tekst'].value = 'blaat';
}
</script>
<form name="form1" method="post" action="dummy.html">
<textarea name="textfield">test tekst</textarea>
<input type="button" value="klik" onclick="test()" />
</form>
Als ik het zo doe, wordt de popup wel geopend, maar als ik op de button klik, verstuurd hij de waarde niet terug naar de textarea op hoofdpagina.
Maar nu het vreemde.. haal ik de tiny mce weg, dan werkt het wel gewoon. En komt de waarde uit de popup wel in de textarea van de andere pagina terrecht.
Iemand enig idee, hoe dit op te lossen?
Verder raad ik de notatie met . niet aan in JavaScript. Het gaat beter met document.getElementById, of met een framework als Mootools.
Ik zal het gaan veranderen naar: document.getElementById, maar dit is niet de oplossing voor mijn probleem.
Nog meer tips?
edit: Beide geprobeerd, ik had het hierboven alleen verkeerd neergezet. Maar helaas niet goed?
Gewijzigd op 01/01/1970 01:00:00 door Davy Jansen
Edit: en een textarea heeft geen value. Je moet innerHTML gebruiken.
Gewijzigd op 01/01/1970 01:00:00 door Jan Koehoorn
Verder als ik het volgende uitvoer:
doe, dan krijg ik in beide gevallen dit als alert terug: [object]
edit: ook bij alert(opener.document.forms['form'].tekst.value);
krijg ik de correcte waarde 'blaat' terug.
Waar kan het dan nog aan liggen?
Gewijzigd op 01/01/1970 01:00:00 door Davy Jansen
test.php:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
2
3
4
5
6
7
8
9
10
11
12
13
14
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
</head>
<body>
<form method="post" action="">
<textarea id="area51" name="area51" rows="10" cols="40"></textarea>
<button id="open" type="button" value="open" onclick="window.open ('pop.html','','toolbar=0,scrollbars=1,resizable=0')" />
</form>
</body>
</html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
</head>
<body>
<form method="post" action="">
<textarea id="area51" name="area51" rows="10" cols="40"></textarea>
<button id="open" type="button" value="open" onclick="window.open ('pop.html','','toolbar=0,scrollbars=1,resizable=0')" />
</form>
</body>
</html>
pop.html
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
2
3
4
5
6
7
8
9
10
11
12
13
14
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
<script type="text/javascript">
window.opener.document.getElementById ('area51').innerHTML = 'test geslaagd';
</script>
</head>
<body>
<h1>pop</h1>
</body>
</html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
<script type="text/javascript">
window.opener.document.getElementById ('area51').innerHTML = 'test geslaagd';
</script>
</head>
<body>
<h1>pop</h1>
</body>
</html>
Maar waar het nu aan tiny mce aan ligt, weet ik nog steeds niet?
Bij TinyMCE heb je een textarea, maar deze wordt vervangen. Je geeft wel een name mee, maar je kunt waarschijnlijk ook een ID meegeven in de aanroepcode van TinyMCE.
@Robert Deiman, in de form en textarea geef ik beide een id en een name mee. Dit gaf geen oplossing. Bedoel je dit met de aanroepcode? Of begrijp ik je verkeerd?
Dat is waar ik op doelde.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
<script type="text/javascript" src="functions/jscripts/tiny_mce/tiny_mce.js"></script>
<script type="text/javascript">
tinyMCE.init({
mode : "textareas",
theme : "advanced",
language : "nl",
//hier de plugins
//hier de buttons
//hier de functies
});
<script type="text/javascript">
tinyMCE.init({
mode : "textareas",
theme : "advanced",
language : "nl",
//hier de plugins
//hier de buttons
//hier de functies
});
Vervolgens worden alle textarea 'overschreven' met de tiny mce.
Hier voor hoef je verder geen functies voor aan te roepen, enz.
Kan het dan ook?
Ik geloof dat tinyMCE de textarea's omzet naar iframes. Als ik het goed heb werkt de editor voor browsers gebaseerd op de gecko-engine alleen met iframes. Het is dus mogelijk dat je textarea niet meer met JS te benaderen is als tinyMCE geinitialiseerd is. Ik zal even testen of het klopt wat ik zeg ;-)