Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [JavaScript] Wstawianie BBcode, Jak zrobić żeby po naciśnieciu anuluj w okienku (prompt) nie wstawiało
RafaelX
post
Post #1





Grupa: Zarejestrowani
Postów: 144
Pomógł: 28
Dołączył: 2.01.2009

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


  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

Ten post edytował RafaelX 3.01.2009, 19:56:27
Go to the top of the page
+Quote Post
xmik
post
Post #2





Grupa: Zarejestrowani
Postów: 10
Pomógł: 0
Dołączył: 17.02.2006

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


Czym jest BB() ? Funkcji obsługujących BBCode napewno jest wiele, a tutaj chyba nikt nie wróży.
Go to the top of the page
+Quote Post
RafaelX
post
Post #3





Grupa: Zarejestrowani
Postów: 144
Pomógł: 28
Dołączył: 2.01.2009

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


  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

Ten post edytował RafaelX 3.01.2009, 19:59:07
Go to the top of the page
+Quote Post
ziqzaq
post
Post #4





Grupa: Zarejestrowani
Postów: 428
Pomógł: 128
Dołączył: 17.06.2007

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


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. ?>


Ten post edytował ziqzaq 3.01.2009, 22:12:26
Go to the top of the page
+Quote Post
RafaelX
post
Post #5





Grupa: Zarejestrowani
Postów: 144
Pomógł: 28
Dołączył: 2.01.2009

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


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
Go to the top of the page
+Quote Post
ziqzaq
post
Post #6





Grupa: Zarejestrowani
Postów: 428
Pomógł: 128
Dołączył: 17.06.2007

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


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.

Ten post edytował ziqzaq 4.01.2009, 00:45:42
Go to the top of the page
+Quote Post
RafaelX
post
Post #7





Grupa: Zarejestrowani
Postów: 144
Pomógł: 28
Dołączył: 2.01.2009

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


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

Ten post edytował RafaelX 4.01.2009, 13:02:28
Go to the top of the page
+Quote Post
ziqzaq
post
Post #8





Grupa: Zarejestrowani
Postów: 428
Pomógł: 128
Dołączył: 17.06.2007

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


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.

Ten post edytował ziqzaq 4.01.2009, 13:37:23
Go to the top of the page
+Quote Post
RafaelX
post
Post #9





Grupa: Zarejestrowani
Postów: 144
Pomógł: 28
Dołączył: 2.01.2009

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


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ąć

Ten post edytował RafaelX 4.01.2009, 17:18:04
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: 22.08.2025 - 08:23