Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [JavaScript] Tagowanie tekstu w textarea
Forum PHP.pl > Forum > Przedszkole
Print_Screen
Chciałbym wstawić na stronę najprostszy button, który otaguje mi zaznaczone słowo w htmlowym textarea.

Zaznaczam wyraz, klikam na ów przycisk i robi się <tag>wyraz</tag>.

Nie znam javascriptu, więc w zasadzie proszę o gotowy wzór, który przerobiłbym na różne tagi, bo zasada z pewnością jest ta sama dla pogrubiania, podkreślania etc.
IProSoft
Nie ten dział: Gotowe rozwiązania
https://www.google.pl/search?q=bbcode+gotowy+skrypt
Print_Screen
Nie da się w javascripcie?

Nie buduję forum internetowego. Najlepiej, gdyby nie musiało działać po stronie serwera.
mccd
Tu masz gotowca z JQuery.
http://jsfiddle.net/43gqC/1/
Print_Screen
Wielkie dzięki! Oto mi chodziło! Poniższy kod uzyskany dzięki zlinkowanej stronie ładnie działa.

  1. <title>Title</title>
  2. <meta http-equiv="Content-type" content="text/html; charset=utf-8">
  3. </head>
  4.  
  5. <script type="text/javascript"
  6. src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.js"></script>
  7.  
  8. <textarea id='text'>
  9. Ala ma kota, a kot ma Alę.
  10.  
  11. <button type="button" id='tag'>Tag</button>
  12.  
  13. <script type="text/javascript"><!--
  14. function wrapText(elementID, openTag, closeTag) {
  15. var textArea = $('#' + elementID);
  16. var len = textArea.val().length;
  17. var start = textArea[0].selectionStart;
  18. var end = textArea[0].selectionEnd;
  19. var selectedText = textArea.val().substring(start, end);
  20. var replacement = openTag + selectedText + closeTag;
  21. textArea.val(textArea.val().substring(0, start) + replacement + textArea.val().substring(end, len));
  22. }
  23. $('#tag').click(function(){
  24. wrapText("text", "<tag>", "</tag>");
  25. });
  26. //--></script>
  27. </body>
  28. </html>


Czy dałoby się może jakoś poprzestawiać te komendy tak, żeby dorobić opcję odwracającą ostatnie zmiany? (przycisk cofnij).
mccd
http://jsfiddle.net/43gqC/2/

W tym skrypcie możesz cofnąć ostatnią zmianę, żeby móc cofać więcej wstecz, musiałbyś zapisywać wartość textarea po każdej zmianie np. do tablicy.
Print_Screen
Wielkie dzięki!

Odświeżam temat, bo napotkałem mały problem. Otóż funkcja działa tylko z polem o nazwie text. Jeśli są dwa pola o nazwie text, to działa z tym pierwszym.

Czy możliwe jest by działało to na wszystkich polach w dokumencie? Czy też każde pole tekstowe musiałoby mieć swoje przyciski do tagowania?
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.