Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [JavaScript] Wstawianie BBcode
Forum PHP.pl > Forum > Przedszkole
RafaelX
  1. function Img(url)
  2. {
  3. bb(\\"[img]\\\"+((url=sel())?url:prompt(\\\"Podaj adres obrazka\\\",\\\"http://\\\"))+\\\"[/img]\\\")
  4. }


mam taką funkcje i chce aby po naciśnięciu anuluj zamiast wstawiać tag i w środku \"null\" nie dodawało nic po prostu zamykało się okienko i nic się nie działo, próbowałem wstawić tam
  1. if (url!=null) { stop; }

ale nic mi nie wychodziło, a skrypt nawet się nie uruchamiał :/ nie znam się na JS wiec nie wiem ocb
xmik
Czym jest BB() ? Funkcji obsługujących BBCode napewno jest wiele, a tutaj chyba nikt nie wróży.
RafaelX
  1. D=document,S=[],T=[],C=alert,B=unescape;
  2. onload=function()
  3. {
  4. F=D.getElementById('message')
  5. }
  6. function bb(tag)
  7. {
  8. D.selection?(F.focus(),D.selection.createRange().text=tag):(F.selectionStart||F.selectionStart=='0')?F.value=F.value.substring(0,F.selectionStart)+tag+F.value.substring(F.selectionEnd,F.value.length):F.value+=tag
  9. }
  10. function sel()
  11. {
  12. return D.selection?D.selection.createRange().text:F.value.substring(F.selectionEnd||0,F.selectionStart||0)
  13. }


nie wiem na co ci to potrzebne ale prosze
ziqzaq
Proszę bardzo, tag doda się tylko jeśli przejdzie widoczne poniżej wyrażenie regularne, które - nota bene - było pisane na szybko, więc mogą być jakieś błędy winksmiley.jpg
  1. <?php
  2. function bb(tag)
  3.    {
  4.        // Male wyrazonko regularne ;)
  5.        // Pasuje do "[tag]http://znaki.znaki.itd[/tag]"
  6.        // UWAGA linijka z wyrazeniem reg. powinna wygladac tak (parser escapeuje znaki "\"):
  7.        // reg = /^[w+?]http://.+?[/w+?]$/i;
  8.        reg = /^[w+?]http://.+?[/w+?]$/i;
  9.        if(tag.match(reg))D.selection?(F.focus(),D.selection.createRange().text=tag):(F.selectionStart||F.selectionStart=='0')?F.value=F.value.substring(0,F.selectionStart)+tag+F.value.substring(F.selectionEnd,F.value.length):F.value+=tag;
  10.    }
  11. ?>
RafaelX
Cytat(ziqzaq @ 3.01.2009, 22:00:53 ) *
Proszę bardzo, tag doda się tylko jeśli przejdzie widoczne poniżej wyrażenie regularne, które - nota bene - było pisane na szybko, więc mogą być jakieś błędy winksmiley.jpg
  1. <?php
  2. function bb(tag)
  3.    {
  4.        // Male wyrazonko regularne ;)
  5.        // Pasuje do "[tag]http://znaki.znaki.itd[/tag]"
  6.        // UWAGA linijka z wyrazeniem reg. powinna wygladac tak (parser escapeuje znaki "\"):
  7.        // reg = /^[w+?]http://.+?[/w+?]$/i;
  8.        reg = /^[w+?]http://.+?[/w+?]$/i;
  9.        if(tag.match(reg))D.selection?(F.focus(),D.selection.createRange().text=tag):(F.selectionStart||F.selectionStart=='0')?F.value=F.value.substring(0,F.selectionStart)+tag+F.value.substring(F.selectionEnd,F.value.length):F.value+=tag;
  10.    }
  11. ?>


teraz to w ogóle nic nie działa
ziqzaq
Ciekaw jestem czy przyszło ci do głowy przeczytać te komentarze które dodałem do kodu? Co?
Nie robiłem tego dla zabawy.
Mam to wyoślić, ok. No to jak do dziecka:
// Male wyrazonko regularne winksmiley.jpg
// Pasuje do "[tag]http://znaki.znaki.itd[/tag]"
// UWAGA linijka z wyrazeniem reg. powinna wygladac tak (parser escapeuje znaki "\"):
// reg = /^\[\w+?\]http:\/\/.+?\[\/\w+?\]$/i;

Powyższe znaczy że parser na forum escaepuje znaki "\", więc je musisz poprawić.
To działa, ale jak się bezmyślnie przekleja kod to tak bywa, że nie wychodzi. dry.gif

Edit:
Jeszcze jedno. Sprawdzałem na Operze 9.60 i FF 3.0.4 żeby nie było wątpliwości.
RafaelX
Mylisz się przeczytałem wszystko i dodałem \ ale nie działa porostu nie wstawia tego BBcode
//edit
coś się popsuło biggrin.gif i nawet po powrocie do wcześniejszej wersji nie wstawia

/edit 2
To przez zmianę id textarea
poprawiłem trochę to twoje wyrażonko bo to do jeszcze innych tagów będzie stosowane i działa, dzięki za odpowiedź,
ale problem był trochę inny :/ i nie dowiedziałem się jak zrobić żeby po naciśnięciu anuluj nie pokazywało się 2 okienko np jak mam takie coś:
  1. <?php
  2. function Url(u,d)
  3. {
  4. }
  5. ?>


mógł byś mi powiedzieć jak zrobić, żeby po naciśnięciu anuluj w 1 okienku 2 się nie pokazywało w ogóle questionmark.gif
ziqzaq
To nie jest błąd w moim kodzie tylko w twoim.
Na dowód zobacz sobie test - działa, więc na 95% ty coś źle zrobiłeś.
Poprawiony kod*
  1. <?php
  2. <html>
  3. <head>
  4. <title>Tit</title>
  5. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  6. <script type="text/javascript">
  7.    D=document,S=[],T=[],C=alert,B=unescape;
  8.    window.onload=function(){
  9.        F=D.getElementById('message');
  10.    }
  11.    function bb(tag)
  12.    {
  13.        // Male wyrazonko regularne ;)
  14.        // Pasuje do "[tag]http://znaki.znaki[/tag]"
  15.                            // UWAGA linijka z wyrazeniem reg. powinna wygladac tak (parser escapeuje znaki "\"):
  16.                            // reg = /^[.+?]http://.+?[/.+?]$/i;
  17.        reg = /^[.+?].+?[/w+?]$/i;
  18.        if(tag.match(reg))D.selection?(F.focus(),D.selection.createRange().text=tag):(F.selectionStart||F.selectionStart=='0')?F.value=F.value.substring(0,F.selectionStart)+tag+F.value.substring(F.selectionEnd,F.value.length):F.value+=tag;
  19.    }
  20.    function sel()
  21.    {
  22.        return D.selection?D.selection.createRange().text:F.value.substring(F.selectionEnd||0,F.selectionStart||0)
  23.    }
  24.    function klik() {
  25.        var url = (s=sel())?s:prompt("Podaj adres obrazka","http://");
  26.        if(url!=null && typeof(url)!='undefined')bb("[img]"+url+"[/img]");
  27.    };
  28.    function klik2() {
  29.        Url();
  30.    };
  31.    function Url(u,d)
  32.    {
  33.        var u=prompt("Podaj adres strony","http://");
  34.    }
  35. </script>
  36. </head>
  37. <body>
  38. <div><textarea rows="10" cols="50" id="message" name="message"></textarea></div>
  39. <div><input type="button" value="Klik" id="klik" onclick="klik();return false;" /></div>
  40. <div><input type="button" value="Klik 2" id="klik" onclick="klik2();return false;" /></div>
  41. </body>
  42. </html>
  43. ?>


Edit:
To było do wypowiedzi przed edycją powyżej - już chyba nieaktualne winksmiley.jpg
Edit2:
Zedytowałem kod*. Dodałem tą funkcję z postu wyżej i dostosowałem wyrażenie.
RafaelX
Cytat(RafaelX @ 4.01.2009, 12:40:01 ) *
To przez zmianę id textarea
poprawiłem trochę to twoje wyrażonko bo to do jeszcze innych tagów będzie stosowane i działa, dzięki za odpowiedź,
ale problem był trochę inny :/ i nie dowiedziałem się jak zrobić żeby po naciśnięciu anuluj nie pokazywało się 2 okienko np jak mam takie coś:
  1. <?php
  2. function Url(u,d)
  3. {
  4. }
  5. ?>


mógł byś mi powiedzieć jak zrobić, żeby po naciśnięciu anuluj w 1 okienku 2 się nie pokazywało w ogóle questionmark.gif


a na to dał byś rade cos poradzić questionmark.gif

//Edit
Dzięki temat można zamknąć
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.