Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: JS PHP function preview(); podgląd
Forum PHP.pl > Forum > Po stronie przeglądarki > JavaScript
korey
Napisałem taki kodzik:
[JAVASCRIPT] pobierz, plaintext
  1. <script>
  2. // funkcja podgląd wywoływana po kliknięciu przycisku podgląd z forumlarza
  3. function preview() {
  4.  
  5. // do zmiennej t przypisujemy element div o id=targetDiv
  6.  
  7. var t = document.getElementById('targetDiv');
  8.  
  9. // w tablicy targets trzymamy nazwy idków elementów forumlarza, z którego ściągamy dane
  10.  
  11. var targets = new Array('tytul', 'data', 'autor', 'tresc', 'full_tresc');
  12.  
  13. // w tej zmiennej przechowujemy treść wstrzykiwaną później do naszego diva
  14.  
  15. var data = '<h3>Podgląd newsa</b>:<h3/><br />';
  16.  
  17. data += '<link rel="stylesheet" type="text/css" href="functions/newsy.css" media="screen"/>';
  18. data += '<table name="news" class="news" cellpadding="3" cellspacing="0">';
  19. data += '<tbody>';
  20. data += '<tr align="left">';
  21. data += '<td colspan="2" rowspan="1" name="news_title" class="news_title">';
  22. data += document.getElementById('tytul').value;
  23. data += '</td>';
  24. data += '</tr>';
  25. data += '<tr align="justify">';
  26. data += '<td colspan="2" rowspan="1"><b>';
  27. data += document.getElementById('tresc').value;
  28. data += '</b>';
  29. data += document.getElementById('full_tresc').value;
  30. data += '</td>';
  31. data += ' </tr>';
  32. data += '<tr>';
  33. data += '<td name="news_autor" class="news_autor"><b>Autor: </b>';
  34. data += document.getElementById('autor').value;
  35. data +='</td>';
  36. data += '<td name="news_data" class="news_data">';
  37. data += document.getElementById('data').value;
  38. data += '</tr>';
  39. data += '</tbody>';
  40. data += '</table>';
  41.  
  42. data += '<br />';
  43.  
  44.  
  45. // wszystkie dane zebrane, wiec wstrzyknij do (ustaw wartość) docelowego diva
  46.  
  47. t.innerHTML = data;
  48.  
  49. }
  50.  
  51. </script>
[JAVASCRIPT] pobierz, plaintext

Działa on poprawnie ztym małym problemem ze po wpisaniu tekstu i oprawieniu go w bbcode function preview(); wyświetla mi tekst razem z bbcode. A chciałbym by od razu przerabiało BBcode i pokazywało gotowy tekst (ten sformatowany juz)

Graficzny opis i przykład problemu:


To chyba nie potrzebne ale zapodam:
Kod
Funkcja BBCode() w php zamieniająca taki BB na HTML. np [b][/b] na <b></b>


  1. <?php
  2. function BBCode($tekst){
  3. $tekst = nl2br($tekst);
  4. $tekst = preg_replace("#\[b\](.*?)\[/b\]#si",'<b>\\1</b>',$tekst); // Pogrubienie
  5. $tekst = preg_replace("#\[i\](.*?)\[/i\]#si",'<i>\\1</i>',$tekst); // Kursywa
  6. $tekst = preg_replace("#\[u\](.*?)\[/u\]#si",'<u>\\1</u>',$tekst); // Podkreślenie
  7. $tekst = preg_replace("#\[s\](.*?)\[/s\]#si",'<s>\\1</s>',$tekst); // Skreślenie
  8. $tekst = preg_replace("#\[center\](.*?)\[/center\]#si", '<center>\\1</center>', $tekst); // Wycentrowanie
  9. $tekst = preg_replace("#\[img\](.*?)\[/img\]#si",'<img src="\\1" alt="" />',$tekst); // Wstawianie obrazków bez tekstu alternatywnego
  10. $tekst = preg_replace("#\[img=(.*?)\](.*?)\[/img\]#si",'<img src="\\1" alt="\\2" />',$tekst); // Wstawianie obrazków z tekstem alternatywnym
  11. $tekst = preg_replace("#\[url\](http.*?)\[/url\]#si", "<A HREF=\"\\1\" TARGET=\"_BLANK\">\\1</A>", $tekst); // Odnośnik www - nie dodaje http
  12. $tekst = preg_replace("#\[url=(http.*?)\](.*?)\[/url\]#si", "<A HREF=\"\\1\" TARGET=\"_blank\">\\2</A>", $tekst); // Odnośnik www z opisem - nie dodaje http
  13. $tekst = preg_replace("#\[color=(.*?)](.*?)\[/color]#si", "<span style=\"color:\\1\">\\2</span>", $tekst); // Kolor tekstu
  14. /*
  15. By Korey v.0.2
  16. */
  17. return($tekst);
  18. }
  19. ?>


Z góry dziękuję za pomoc.
adrianozo
A, że tak zapytam wczytałeś ją także do pliku, w którym masz powyższy kod i przefiltrowałeś te dane tą funkcją?
korey
ją tzn..?
pokazałem tu dwie funkcje jedna w php która zamienia BBCode na html i drugą w JS która pobiera tekst z formularza u pakuje do diva. Z tym ze ta druga nie zamienia BB na HTML. chciałbym właśnie wpakować te pierwsza do drugiej i nie wiem jak ;/
mortus
Musisz użyć AJAX-a. Po pierwsze po to, aby móc przepuścić twoje dane (zmienna data) przez funkcję php BBCode(), a po drugie po to, aby zapisywać gdzieś (najlepiej w bazie danych) to co wpiszesz do formularza. Dlaczego? Ano dlatego, że Twój formularz zadziała tylko jednorazowo i zmiany będą widoczne tylko u Ciebie i to do momentu odświeżenia strony. Poczytaj na początek co nieco o AJAX-ie, dowiedz się z czym to się je i po co się go używa. Następnie zainteresuj się jakimś frameworkiem JavaScript (osobiście polecam jQuery, który ma wbudowaną metodę .ajax()), bo frameworki takie w dużej mierze ułatwiają pracę i są bardziej czytelne i zrozumiałe aniżeli czysty JavaScript.
adrianozo
Tak samo jak robisz to na stronie, gdzie nie pokazuje tych znaczników tylko zmienia na html czyli w PHP:

  1. <?php
  2. include('functions/bbc.php')
  3. $zapyt2 = 'SELECT * FROM `tabela` ORDER BY `id` DESC';
  4. $idzapyt2 = mysql_query($zapyt2);
  5. while ($wiersz = mysql_fetch_array($idzapyt2))
  6. {
  7. echo ''.BBCode($wiersz['adres_strony']).'';
  8. }
  9. ?>


Na JS się nie znam więc podałem przykład w PHP smile.gif Mam nadzieję, że sobie poradzisz smile.gif Jak coś to pisz.
korey
mortus a nie da sie tego zrobić jakoś przez getElementById() i dodać funkcje BBCode()
np tak: funkcja(funkcja2('tresc'))
mortus
No nie, jeśli nie chcesz przetwarzać tego przez PHP, to w javascript możesz użyć funkcji data.replace("[", "<"); i data.replace("]", ">");. Ale i tak będzie to działać tylko dla aktualnej strony i jak będziesz chciał przesłać formularz dalej, to będziesz musiał go przepuścić przez BBCode, już we właściwym pliku PHP. Pogrubiony kod daj przed tym:
t.innerHTML = data;
korey
od
Cytat
Ale i tak będzie to działać tylko dla aktualnej strony i jak będziesz chciał przesłać formularz dalej, to będziesz musiał go przepuścić przez BBCode, już we właściwym pliku PHP. Pogrubiony kod daj przed tym:
t.innerHTML = data;


nic nie rozumiem.. ;/ cale BBCode działa jak należy, razem z wyświetlaniem. tylko problem jest z podglądem sad.gif kurde no nie mam pomysłu jak to zrobić. sad.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.