Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Problem z BBcode'm
Forum PHP.pl > Forum > Po stronie przeglądarki
batat
W edycji swojego skryptu chcialem dodac bbcode, zeby ta czynnosc szla sprawniej itp. ale nie o to chodzi.
mam taki plik editor.js
Kod
var b = 2;

function tag(v, tagadd, newbut, tagclose, oldbut, name) {
    if (eval(v)%2 == 0) {
        eval("window.document.editform."+name+".value = newbut;");
        var post = window.document.editform.strzelcy_d.value;
        window.document.editform.strzelcy_d.value = post + tagadd;
        window.document.editform.strzelcy_d.focus();
    } else {
        eval("window.document.editform."+name+".value = oldbut;");
        var post = window.document.editform.strzelcy_d.value;
        window.document.editform.strzelcy_d.value = post + tagclose;
        window.document.editform.strzelcy_d.focus();
    }
    eval(v+"++;");
}


natomaist w pliku do edycji mam taki cos:

Kod
<div align=center><input type="button" value="BOLD" name="bold" onclick="javascript:tag('b','[b]','BOLD*','[/b]','BOLD','bold');" /></div>

[.......]

a tutaj sa formularze do edycji



i problem zaczyna sie tutaj, co zrobic, zeby ta funkcja javyscipta odnosila sie do OBYDWU formularzy smile.gif bo na razie dziala tylko w pierwszym textarea o nazwie 'strzelcy_d'. nie znam sie kompletnie na javascripcie, to co zrobilem to na podtsawie tutoriala i stad moj problem biggrin.gif czekam na w maire szybka odpowiedz snitch.gif guitar.gif
revyag
Chcesz za jednym zamachem obsłużyć obydwa formularze, czy chcesz mieć możliwość użycia tej funkcji do obsługi jednego i drugiego formularza ?
W pierwszym przypadku poprostu powtórz wszystkie instrukcje dla drugiego forma, a w drugim do funkcji trzeba dodać zmienną, która będzie odpowiadać za dany formularz i używać tej zmiennej jako nazwy formularza w funkcji.
batat
to jest tak ze mam 1 formularz z dwoma polami typu TEXTAREA. I chcialbym obydwa tego pola moc obslugiwac za pomoca jednego buttona. np. zeby wstawic pogdubienie text itp. probowalem skopiowac ta funkcje ale mi nie wyszlo. jaby co to prosilbym o bardziej szzegolowa pomoc biggrin.gif
revyag
Znaczy, że po kliknięciu buttona do obydwu textarea wstawiane są tagi ? Troche to bez sensu. Ja bym zrobił dwa buttony, dla każdego textarea inny. Obsługa jednym buttonem to będzie tak:
Kod
function tag(v, tagadd, newbut, tagclose, oldbut, name){
    if (eval(v)%2 == 0){
        eval("window.document.editform."+name+".value = newbut;");
        var post = window.document.editform.strzelcy_d.value;
        var post1 = window.document.editform.drugi_textarea.value;
        window.document.editform.strzelcy_d.value = post + tagadd;
        window.document.editform.drugi_textarea.value = post1 + tagadd;
        window.document.editform.strzelcy_d.focus();
   }else{
        eval("window.document.editform."+name+".value = oldbut;");
        var post = window.document.editform.strzelcy_d.value;
        var post1 = window.document.editform.drugi_textarea.value;
        window.document.editform.strzelcy_d.value = post + tagclose;
        window.document.editform.drugi_textarea.value = post1 + tagclose;
        window.document.editform.strzelcy_d.focus();
   }
   eval(v+"++;");
}
batat
ale nie chodzi o to, zeby w obydwu textareach pojawialy sie te znaczniki rownoczesnie. bbcode chce wstawic tam, gdzie jest kursor smile.gif o to chodzi :]
revyag
Kod
var wf,wf1; //zmienne pomcnicze, mówią kóry textarea ma focus
function tag(v, tagadd, newbut, tagclose, oldbut, name) {
   if (eval(v)%2 == 0) {
       eval("window.document.editform."+name+".value = newbut;");
       var post = window.document.editform.strzelcy_d.value;
       var post1 = window.document.drugi_textarea.value;
       if(wf==1){
           window.document.editform.strzelcy_d.value = post + tagadd;
           window.document.editform.strzelcy_d.focus();
       }else if(wf1==1){
           window.document.editform.drugi_textarea.value = post1 + tagadd;
           window.document.editform.drugi_textarea.focus();
       }
   }else {
       eval("window.document.editform."+name+".value = oldbut;");
       var post = window.document.editform.strzelcy_d.value;
       var post1 = window.document.drugi_textarea.value;
       if(wf==1){
           window.document.editform.strzelcy_d.value = post + tagclose;
           window.document.editform.strzelcy_d.focus();
       }else if(wf1==1){
           window.document.drugi_textarea.value = post1 + tagclose;
           window.document.drugi_textarea.focus();
       }
   }
   eval(v+"++;");
}

  1. <form name="editform" id="editform">
  2. <div align=center>
  3. <input type="button" value="BOLD" name="bold" onclick="javascript:tag('b','','BOLD*','','BOLD','bold');" />
  4. </div>
  5. <textarea id="strzelcy_d" name="strzelcy_d" cols="80" rows="10" onfocus="wf=1;wf1=0" ></textarea><br><br>
  6. <textarea id="drugi_textarea" name="drugi_textarea" cols="80" rows="10" onfocus="wf1=1;wf=0"></textarea>
  7. </form>
batat
teraz to juz kompletnie nic nie dziala :] chyba jednak zastosuje dwa buttony, do kazdego pla po 1 :] ale wielkie dzieki za pomoc exclamation.gif
revyag
Teraz już na pewno działa, bo sprawdzałem smile.gif
Kod
var b=2;
var wf,wf1; //zmienne pomcnicze, mówią kóry textarea ma focus
function tag(v, tagadd, newbut, tagclose, oldbut, name) {
  if (eval(v)%2 == 0) {
      eval("window.document.editform."+name+".value = newbut;");
      var post = window.document.editform.strzelcy_d.value;
      var post1 = window.document.editform.drugi_textarea.value;
      if(wf==1){
          window.document.editform.strzelcy_d.value = post + tagadd;
          window.document.editform.strzelcy_d.focus();
      }else if(wf1==1){
          window.document.editform.drugi_textarea.value = post1 + tagadd;
          window.document.editform.drugi_textarea.focus();
      }
  }else {
      eval("window.document.editform."+name+".value = oldbut;");
      var post = window.document.editform.strzelcy_d.value;
      var post1 = window.document.editform.drugi_textarea.value;
      if(wf==1){
          window.document.editform.strzelcy_d.value = post + tagclose;
          window.document.editform.strzelcy_d.focus();
      }else if(wf1==1){
          window.document.editform.drugi_textarea.value = post1 + tagclose;
          window.document.editform.drugi_textarea.focus();
      }
  }
  eval(v+"++;");
}

  1. <form name="editform" id="editform">
  2. <div align=center>
  3. <input type="button" value="BOLD" name="bold" onclick="tag('b','','BOLD*','','BOLD','bold');" />
  4. </div>
  5. <textarea id="strzelcy_d" name="strzelcy_d" cols="80" rows="10" onfocus="wf=1;wf1=0" ></textarea><br><br>
  6. <textarea id="drugi_textarea" name="drugi_textarea" cols="80" rows="10" onfocus="wf1=1;wf=0"></textarea>
  7. </form>
batat
mi nie chodzi sad.gif chyba wszystko obrze robie, wklejam 1 kod do editor.js, podstawiam tylko nazwe 2 formularza i wklejam 2 kod do pliku edycyjnego i nic sad.gif
revyag
A czy aby na pewno nie zapominasz o czymś ?
Wklej to "na żywca" do jakiegoś dokumentu html i zobaczysz że jest ok. Coś musiałeś przeoczyć smile.gif
batat
ok sprobuje biggrin.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.