Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [JavaScript]Dodawanie tekstu w textarea
Forum PHP.pl > Forum > Przedszkole
grzegosh
Chcę zrobić BBCode na stronie, podczas wrzucania newsów lub edycji.
Doszedłem do etapu, gdzie potrafię dodać do tekstu np [b] poprzez klikniecie w link "pogrub". Tekst dodaje się na końcu, ale mam problem. Jeżeli tylko zmienię cokolwiek w textarea, dodawanie [b] przez link już nie działa. Zapewne, chodzi o to, że tekstarea zmienił swoj innerHTML i javascript głupieje, ale dlaczego? I dlaczego mogę wstawiać poprzez kliknięcie dużo [b], text area też zmienia wtedy swoją zawartość. Jak to rozwiązać, ażeby można było pisać i wstawiać, niekoniecznie w miejsce kursora BBcode?
Dziękuję.

  1. <?php
  2. echo "<form action='index.php?cont=a_news&do=edit_news&id=".$_GET[id]."' method=post>";
  3.            echo "<table class='news_edycja_table'>
  4.            <tr><td><label>Tytuł newsa <input type='text' name='news_tytul' value='".$wiersz['tytul']."' /></label></td></tr>
  5.            <tr><td><a href='java script:void(0)' onclick=\"wstawBBkod('pogrub')\">Pogrub</a></td></tr>
  6.            
  7.            <script typ='text/javascript'>
  8.            function wstawBBkod(czynnosc)
  9.            {
  10.                tresc=document.getElementById('news_tresc_id');
  11.                switch(czynnosc)
  12.                {
  13.                    case 'pogrub': tresc.innerHTML+='[b]';
  14.                    ;
  15.  
  16.                }
  17.                
  18.                
  19.            }
  20.            </script>
  21.            <tr><td><textarea name='news_tresc' id='news_tresc_id' rows='10' cols='70'>".$wiersz['tresc']."</textarea></td></tr>
  22.            <tr><td><input type='submit' value='Wyslij'></td></tr>
  23.            <tr><td><input type=hidden name='wyslano_edit' value='1'></td></tr>
  24. ?>
erix
innerHTML? A nie value?
pgrzelka
aby wstawiać w miejsce kursora zainteresuj się selectionStart i selectionEnd,
grzegosh
@erix
W textboxie wyświetlam treść pomiędzy znacznikiem <textbox>tresc</textbox>, zatem użyłem innerHTML. Masz jakiś inny pomysł?

Wybaczcie za pewnie głupotę moją, ale jak robie tak:
  1. tresc=document.getElementById('news_tresc_id');
  2.  
  3. var poczatek=document.javascript.tresc.selectionStart;
  4. alert(poczatek);

to nie wyświetla nic, wyświetla bład, że nie jest obiektem bądź jest pusty.
Mógłby ktoś napisać przykład takiego wstawiania bbcode w miejscu kursora, albo chociaz na koncu textboxu?
erix
Wyciągaj TEXTAREA z tablicy document.forms, będzie najlepiej.

W TEXTAREA = value, przecież to element formularza. tongue.gif
grzegosh
Nie wiem czy dobrze rozumiem to co piszesz, czyli dla textarea istnieje value?
Bo takie coś mi nie działa <textarea value="tresc"></textarea>
Tak samo nie znalazłem tego w kursie pierwszym lepszym z brzegu: http://www.kurshtml.boo.pl/html/textarea,html.html

Ale mniejsza o to, zapewne to wynik mojej niewiedzy, ale ciągle problem nie jest rozwiązany. Mianowicie, jak wstawiać te BBCode w pole textarea. Działa mi tylko jak zrobie to przed jaką kolwiek edycją textarea, potem już nie.
Proszę o pomoc.
pgrzelka
Cytat
document.javascript.tresc.selectionStart;
pierwszy raz widzę taką składnie biggrin.gif , chyba raczej powinno być tak
document.getElementById('ppp').selectionStart;

poniższy kod działa
  1. <script type="text/javascript">
  2.  
  3. function pokaz(){
  4. tresc = document.getElementById('ppp').value;
  5.  
  6. tresc += '[b]';
  7.  
  8. document.getElementById('ppp').value = tresc;
  9. }
  10.  
  11.  
  12. <textarea id="ppp">tresc</textarea>
  13. <br />
  14. <input type="button" value="b" onclick="pokaz()" />
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.