[PHP & JS] Value textarea veranderen
Ik snap het even niet meer. Ik laat door middel van het veranderen van een select[1] de inhoud van enkele formuliervelden door JavaScript aanpassen.
Zoiets:
<script type="text/javascript">
function setOptions(chosen) {
var selbox = document.maakbericht.elements['ber_aan[]'];
selbox.options.length = 0;
if (chosen == "0") {
selbox.options[selbox.options.length] = new Option('Kies eerst een incident',' ');
}
else if (chosen == "1") {
selbox.options[selbox.options.length] = new Option('Allemaal','allemaal');
selbox.options[selbox.options.length] = new Option('Eigen regio','regio');
selbox.options[selbox.options.length] = new Option('Eigen dienst','dienst');
selbox.options[selbox.options.length] = new Option('Naam2, Functie2','2');
selbox.options[selbox.options.length] = new Option('Naam3, Functie3','3');
document.maakbericht.inc_srt_inc_naam.value = 'Wegongeval (meerdere voertuigen)';
document.maakbericht.inc_datum.value = '30-08-2004';
document.maakbericht.inc_tijd.value = '08:21';
document.maakbericht.inc_beschrijving.value = 'Schoolbus gekanteld na botsing vrachtwagen.
Nabij de Koni';
}
// Etc.
</script>
Nu wordt het gedeelte vanaf if (chosen == "1") voor elke record die ik uit de DB haal neergezet. Hierbij zijn de gegevens natuurlijk anders.
De laatste formulierwaarde in dit voorbeeld wat veranderd moet worden is een textarea. Zoals je weet kan de waarde van een textarea uit meerdere regels bestaan.
Maar daar gaat de JS helemaal fout... Die kan voor die value geen meerdere regels aan (zoals het voorbeeld). Dit heb ik getest door de tekst in te korten naar 1 regel.
Nu kan je natuurlijk zeggen, hou het dan op 1 regel, maar dat wil ik niet. Mijn vraag is daarom, hoe kan ik, mbv PHP de var die die tekst print ($incident[5]) zo krijgen dat die de nieuwe regels niet maakt, maar dat het er wel goed uitziet in de textarea?
[1] De select is zo:
<select name="ber_inc_id" onchange="setOptions(document.maakbericht.ber_inc_id.options[document.maakbericht.ber_inc_id.selectedIndex].value);">
Alvast bedankt,
Elwin
alles moet op dezelfde regel
met \n kan je een nieuwe regel neerzetten, voorbeeld:
<textarea id="test">
Edit:
Gewijzigd op 31/08/2004 01:30:00 door Rick
document.maakbericht.inc_beschrijving.value = 'Schoolbus gekanteld na botsing vrachtwagen.
\n
\nNabij de Koni.';
Cheers,
Elwin
Elwin
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
<?
# Alles in een arraytje zetten
$text = explode("\n", $text);
# Ff alles nalopen
for($i = 1; $i =< count($text); $i++)
{
$text[$i] = str_replace("\r", "", $text[$i]);
$text[$i] = str_replace(" ", "", $text[$i]);
}
# Nu netjes imploden
$text = implode("\n", $text);
?>
# Alles in een arraytje zetten
$text = explode("\n", $text);
# Ff alles nalopen
for($i = 1; $i =< count($text); $i++)
{
$text[$i] = str_replace("\r", "", $text[$i]);
$text[$i] = str_replace(" ", "", $text[$i]);
}
# Nu netjes imploden
$text = implode("\n", $text);
?>
dit zet je op de plaats van:
document.maakbericht.inc_beschrijving.value = 'Schoolbus gekanteld na botsing vrachtwagen.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?php
$invoer="Schoolbus gekanteld na botsing vrachtwagen.
Nabij de Koni";//moet je zelf maar aanpassen
$invoer_js=explode('
', $invoer);
$count=count($invoer_js);
for($i=0;$i<$count;$i++){
if($i==0){
echo "document.maakbericht.inc_beschrijving.value = ".$invoer_js[$i]."\n";
}
else{
echo "document.maakbericht.inc_beschrijving.value+= ".$invoer_js[$i]."\n";
}
}
?>
$invoer="Schoolbus gekanteld na botsing vrachtwagen.
Nabij de Koni";//moet je zelf maar aanpassen
$invoer_js=explode('
', $invoer);
$count=count($invoer_js);
for($i=0;$i<$count;$i++){
if($i==0){
echo "document.maakbericht.inc_beschrijving.value = ".$invoer_js[$i]."\n";
}
else{
echo "document.maakbericht.inc_beschrijving.value+= ".$invoer_js[$i]."\n";
}
}
?>
laat mij iets weten
Gewijzigd op 31/08/2004 14:02:00 door Bram Z
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?php
$invoer="Schoolbus gekanteld na botsing vrachtwagen.
Nabij de Koni";//moet je zelf maar aanpassen
$invoer_js=explode('
', $invoer);
$count=count($invoer_js);
for($i=0;$i<$count;$i++){
if($i==0){
echo "document.maakbericht.inc_beschrijving.value = \"".$invoer_js[$i]."\"\n";
}
else{
echo "document.maakbericht.inc_beschrijving.value+= \"\\n".$invoer_js[$i]."\"\n";
}
}
?>
$invoer="Schoolbus gekanteld na botsing vrachtwagen.
Nabij de Koni";//moet je zelf maar aanpassen
$invoer_js=explode('
', $invoer);
$count=count($invoer_js);
for($i=0;$i<$count;$i++){
if($i==0){
echo "document.maakbericht.inc_beschrijving.value = \"".$invoer_js[$i]."\"\n";
}
else{
echo "document.maakbericht.inc_beschrijving.value+= \"\\n".$invoer_js[$i]."\"\n";
}
}
?>
Even het testrapport.. :D
De code van Mitch geeft een foutmelding op de vergelijking in de for(). =< mag niet. Als ik het verander naar <= krijg ik deze foutmelding:
Fatal error: Allowed memory size of 8388608 bytes exhausted (tried to allocate 35 bytes) in /var/www/test.propane.nl/html/acdl/bericht.php on line 809
Nie werk nie dus.
Als ik het op gelijk aan laat controleren (==) dan krijg ik ook die foutmelding, maar dan pas als er met een beschrijving van 1 regel wordt gewerkt...
Als ik het op alleen kleiner dan controleer krijg ik geen foutmelding, maar is de output als volgt:
document.maakbericht.inc_beschrijving.value = 'Schoolbus gekanteld na botsing vrachtwagen.
NabijdeKoni.';
En zie dan NabijdeKoni... zonder spaties.. :S
Goed.. dan die (tweede) van D@rk. Deze werkt! Cheers! :D
Ik dacht eerst dat die niet werkte. Toen ik hem na een tijdje toch nog voor de tweede keer testte werkte die wel. Wat was het nou? Ik had de code met Tabjes naar rechts verplaatst en toen was die explode() niet goed meer...
Ipv $invoer te gebruiken heb ik natuurlijk gelijk $incident[5] in de explode() gedaan. Werkt goed. De bron is als volgt geworden hierdoor:
document.maakbericht.inc_beschrijving.value = "Schoolbus gekanteld na botsing vrachtwagen."
document.maakbericht.inc_beschrijving.value+= "\n"
document.maakbericht.inc_beschrijving.value+= "\nNabij de Koni."
Precies goed dus.. :D
Iedereen bedankt!
Elwin
Ja je mogt geen tabjes gebruiken bij explode :p
Elwin (helemaal blij dat het werkt)