Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [JavaScript] button dodajace tresc w textarea
skw
post
Post #1





Grupa: Zarejestrowani
Postów: 36
Pomógł: 0
Dołączył: 14.11.2008

Ostrzeżenie: (0%)
-----


Chcę zrobić takie samo coś jak np tutaj na forum przy pisaniu postu, że przy naciśnięciu np na button PHP automatycznie dodaje się bbcode ([php][/php]) do pola textarea z tym, że ja chcę wpisać własną treść. W tematyce js jestem zielony więc proszę o pomoc.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 1)
thek
post
Post #2





Grupa: Moderatorzy
Postów: 4 362
Pomógł: 714
Dołączył: 12.02.2009
Skąd: Jak się położę tak leżę :D




Musisz znać ID tego textarea i mu odpowiednio modyfikować value. Dodanie czegoś na koniec lub początek to pryszcz. Ale zrobienie tego by działał gdzieś w środku oraz jeszcze po zaznaczeniu tekstu dodawał znaczniki na koniec i początek przedziału to kolejne kilkadziesiąt linijek kodu, bo musisz to pisać dla kilku przeglądarek, bo nie działa to jednakowo. Sam takie coś już pisałem.
Kod
function putTag(field, strBefore, strAfter) {
   element = document.getElementById(field);
   element.focus();
   // IE
   if (document.selection) {
       var oRange = document.selection.createRange();
       var numLen = oRange.text.length;
       if(strBefore == "[ol][li]" || strBefore == "[ul][li]") {
       oRange.text.replaceAll("\n", "[/li][li]");
     }
       oRange.text = strBefore + oRange.text + strAfter;
       return false;
   // FF i Opera
   } else if (element.setSelectionRange) {
      var selStart = element.selectionStart, selEnd = element.selectionEnd;
            var oldScrollTop = element.scrollTop;
            if(strBefore == "[ol][li]" || strBefore == "[ul][li]") {
        oRange = element.value.substring(selStart, selEnd).replaceAll("\n", "[/li][li]");
      } else {
        oRange = element.value.substring(selStart, selEnd);
      }
      element.value = element.value.substring(0, selStart) + strBefore + oRange + strAfter + element.value.substring(selEnd);
      element.setSelectionRange(selStart + strBefore.length, selEnd + strBefore.length);
            element.scrollTop = oldScrollTop;      
      element.focus();
   } else {
            var oldScrollTop = element.scrollTop;
      element.value += strBefore + strAfter;
            element.scrollTop = oldScrollTop;      
      element.focus();
    }
}
Podajesz tagi jakie chcesz (ja robiłem wersję bezparametrową). Dodatkowo jeszcze jeśli masz kilka linijek czegoś to ujęcie ich w zakres i kliknięcie na odpowiedni guzik zrobi z tego listę, gdzie każda linijka będzie elementem listy. Jak widzisz osobno dla IE i dla reszty. Nie testowałem na webkicie tego.


--------------------
Najpierw był manual... Jeśli tam nie zawarto słów mądrości to zapytaj wszechwiedzącego Google zadając mu własciwe pytania. A jeśli i on milczy to Twój problem nie istnieje :D
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 20.08.2025 - 13:05