Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Uzupełnienie <textarea>
Forum PHP.pl > Forum > XML, AJAX > AJAX
andrzejf
Witam

Proszę o sugestie i podpowiedzi jak uzupełnić pole <textarea> tekstem który przychodzi z powiedzmy innej tabeli.

Jestem w stanie zrobić to na zwykłym polu, w pewnym uproszczeniu wygląda to tak:
  1. <td><span id="description"></span>&nbsp;&nbsp;</td>

potem wypełniam to pole:
  1. $['description'].innerHTML='<?php $text_przychodzacy_z_innej_tabeli; ?>&nbsp;';


teraz zastanawiam się jak można by to zmienić aby wypełnianym polem było <textarea> i aby po uzupełnieniu pola można go było modyfikować.

Z góry dziekuję za pomoc
andrzej
nospor
textarea nie ma "innerHTML" a ma poprostu "value"
andrzejf
oczywiście tylko jak spróbowałem w ten sposób
  1. $['description'].value='test test';

to też nie działa,
czy coś źle robię ?
nospor
Takie nie wiadomo cos:
$['description'].innerHTML
ci działa, a to :
$['description'].value
już nie? Coś kręcisz...

Jesli textarea ma nadane id, to:
document.getElementById('idtextarea').value='blabla';
andrzejf
pełny kod:

  1. <script>document.observe('dom:loaded', function() {
  2. function templnameChanged()
  3. {
  4. new Ajax.Request('medical_fill.php?&id='+encodeURIComponent($F('templname')),
  5. {encoding: 'iso-8859-2', method: 'get', onCreate: function(){ $('templname').disable(); $('templnameLoading').innerHTML='<img src=wiatraczek.gif align=top>'; }, onComplete: function(){$('templname').enable(); $('templnameLoading').innerHTML='';}}
  6. );
  7. };
  8. templnameChanged();
  9. $('templname').onchange=templnameChanged;
  10. });</script>


i plik medical_fill.php
  1. $d=dirname(__FILE__);
  2. include("$d/funlib.php");
  3. header("Content-type: text/javascript; charset=iso-8859-2");
  4. $id=$_GET['id'];
  5.  
  6. if(!$id)
  7. {
  8. die('// blad!');
  9. }
  10.  
  11. $res=sql("select * from `examtempl` where `id_examtempl`='$id' limit 1"); // sql() funkcja gdzie indziej zdefiniowana
  12. if($row=mysql_fetch_assoc($res))
  13. {
  14. ?>
  15. $('descr').value='<?php echo addslashes($row['descr']); ?>&nbsp;';
  16. <?php
  17. }
nospor
No a masz to textarea o ID descr?

ps: do tego:
$('descr').value='<?php echo addslashes($row['descr']); ?>&nbsp;';

dopisz:
$('descr').value='<?php echo addslashes($row['descr']); ?>&nbsp;';
alert(2);

Wyswietla się alert?
andrzejf
tak jest przydzielony id dla tego pola i też name
odzielny plik z template'em strony
  1. <td class="bodyTbl" valign="top"><%%html_field(descr)%%></td>


potem w php zastepuję go
  1. $html_code=str_replace('<%%html_field(descr)%%>', '<textarea name="descr" id="descr" cols="50" rows="15" class="textbox">&nbsp;</textarea>', $html_code);
nospor
Spójrz jeszcze na ps z mojego poprzedniego posta i odpowiedz na drugie pytanie.
andrzejf
tak wyskakuje ALERT
nospor
Podałem ci kod:
document.getElementById('idtextarea').value='blabla';
Więc użyj go a nie używasz
$('descr')

Zakładam że używasz prototype. Masz więc dwa wyjscia:
1) Użyj to co ja ci podałem
2) Albo zajrzyj do dokumentacji prototype (czy czego tam używasz) i zobacz jak tam się należy dobrać do value elementu.
andrzejf
oczywiście użyłem Twojego kodu

Bardzo dziękuję za poświęcony czas

Sprawdzę jeszcze raz wszystko po kolei

Pozdrawiam
nospor
Skoro użyłeś mojego kodu, to czemu pokazujesz, że masz tak:
$('descr').value='<?php echo addslashes($row['descr']); ?>&nbsp;';
? wink.gif

Sprawdź czy napewno textarea ma id jakie ma miec. W źródle strony to sprawdź a nie w szablonie.
andrzejf
nie mam pojęcia co jest źle
dodałem coś takiego i wyskakuje mi alert 'test-123' natomiast na stronie www <textarea> jest ciągle puste!
  1. <?php
  2. document.getElementById('descr').value='test-123';
  3. alert(document.getElementById('descr').value);
  4. ?>
nospor
Wystaw ten kod na zewnątrz, by można było na niego luknąć online.
andrzejf
dziwne i tego nie rozumiem
Jak usunąłem ze strony skrypt ( sciągnięty z http://nicedit.com/ )
to zaczeło działać

czyli jak usunałem to co poniżej, to jest ok ale nie mam możliwości korzystania z html w polu 'descr'
  1. <script type="text/javascript" src="nicEdit.js"></script>
  2. <script language="javaScript">
  3. bkLib.onDomLoaded(function(){
  4. if(document.getElementById('descr')!=undefined)
  5. new nicEditor().panelInstance('descr');
  6. });
luckyps
pokaz w koncu wynikowy kod strony... tak to mozna tylko zgadywac...
nospor
Jejkuś.... to mów od razu że używasz edytora na tym polu.....
Przecież ten edytor nie wyświetla tleści w textarea tylko go podmienia. Poczytaj w dokumentacji tego edytora jak dynamicznie ustawiać w nim treść.
andrzejf
Cytat(luckyps @ 21.10.2011, 11:12:22 ) *
pokaz w koncu wynikowy kod strony... tak to mozna tylko zgadywac...

jak ?
mam tu wkleić kilkanaści plików, komu się zechce to analizować, pisałem to w 2010 i teraz wróciłem aby własnie zmienić to by mozna było 'włozony' tekst modyfikować.
Na razie to sam się zastanawiam co ja rok temu miałem na myśli robiąc pisząc pewne rzeczy, zawsze mi szkoda czasu na komentarze ( teraz by się przydały )
nospor
Powtarzam:
Cytat
Jejkuś.... to mów od razu że używasz edytora na tym polu.....
Przecież ten edytor nie wyświetla tleści w textarea tylko go podmienia. Poczytaj w dokumentacji tego edytora jak dynamicznie ustawiać w nim treść.
luckyps
1. Czy jezeli umiescisz jakis testowy tekst na sztywno w textarea to bedzie on widoczny poprawnie razem z nicEditorem ?
2. Moze kolejnosc wykonywania skryptow jest bledna (najpierw wpisz wartosc w textarea a potem uruchom na nim nicEditor) ?

3. nospor dobrze Ci radzi smile.gif
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.