Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Dodawanie emotikonów...
Forum PHP.pl > Forum > Po stronie przeglądarki
gniew1971
Witam !
Mam problem. Co zrobić by jak klikne w emotikona pojawił sie w polu do pisania, a później normalnie wyświetlał się w komentarzach? Pokaże obrazek o co mi chodzi:




Prosze pomóżcie !
Kildyt
Nieodpowiedni dział wybrałeś. Takie rzeczy robi się w javascripcie.
Możesz zrobić to na kilka sposobów. Z tego co wiem:
- jeżeli ma się dodać na koniec: innerHTML,
- jeżeli w miejsce kursora:
Kod
    var element = document.getElementById('textarea' + id);
    
    var selection = element.value.substr(element.selectionStart, element.selectionEnd - element.selectionStart);
    start = element.value.substr(0, element.selectionStart);
    end = element.value.substr(element.selectionEnd, element.textLength);
    
    element.value = start + selection + work + end;
    
    element.focus();
    document.getElementById('textarea' + id + '_info').style.display = 'none';
(jak nie będziesz potrafił dostosować go do swoich potrzeb - pomożemy; jestem amatorem w js, więc kod może być kiepskiej jakości).

Ogólnie musisz oprzeć się na DHTML-u i js-ie.
gniew1971
Dobra, czyli jak to mam wstawić, dokładniej?
Kildyt
Już napisałem. Skorzystaj z DHTML-a i javascripta. Gotowego przepisu tutaj nie dostaniesz.
Ogólnikowo:
- dodaj do funkcji javascript działanie (w tym wypadku dodawanie tekstu do texraea),
- do emotikonki dodaj zdarzenie onclick zawierające nazwę funkcji,
- do wybranego textarea dopisz unikalny identyfikator,
- w funkcji js działaj na podanym identyfikatorze.
gniew1971
Oj, to chyba na mnie za trudne...
Kildyt
Wcale nie takie trudne. smile.gif Wystarczy trochę chęci i samozaparcia.

Trochę pomogę:
  1. <script type="text/javascript">
  2. function emoticonAdd(work) {
  3. var element = document.getElementById('textarea');
  4. element.innerHtml += ' ' + work + ' ';
  5. /* albo element.value.innerHtml += ' ' + work + ' '; zapomniałem biggrin.gif */
  6. }
  7. </head>
  8.  
  9. <a href="#" onclick="emoticonAdd(':)');"><img src="" alt="uśmiech" /></a>
  10. <textarea id="textarea"></textarea>

Pisałem w poście, więc mogą być błędy.
gniew1971
Więć sprawa ma się tak:


Kod
    echo "<dt style='float:left; padding-left:37px;'><b>Emotikony</b></dt><dt style='padding-left:37px;'><b>Treść</b></dt><div style='float: left; background-image: url(http://moszczenica.info/podklad.jpg); border:1px; border-color:gray; width:150px; height:135px;'><a href=\"#\" onclick='emoticonAdd(':)');'><img src='images/smiles/smile_angry.gif'></a></div><div><textarea style='background-image: url(http://moszczenica.info/podklad.jpg); border:1; border-color:lightgray;' id='form_text' rows='7' cols='40' style='width:250px; height:100px;'></textarea></div>";
- to odpowiada za textere, i tu daje emotke.


Kod
<script type="text/javascript">
function emoticonAdd(work) {
var element = document.getElementById('form_text');
element.innerHtml += ' ' + work + ' ';
/* albo element.value.innerHtml += ' ' + work + ' '; zapomniałem :D */
}
</script>
- a to jest ten twój skrypt


co mam robić?
Kildyt
nie
  1. onclick='emoticonAdd(':)');'
tylko
  1. onclick="emoticonAdd(':)');"


Napisz co się dzieje jak klikasz na emotikonę.

PS jednak
  1. element.innerHtml += ' ' + work + ' ';
gniew1971
Poprawiłem trochę:

Kod
echo "<dt style='float:left; padding-left:37px;'><b>Emotikony</b></dt><dt style='padding-left:37px;'><b>Treść</b></dt><div style='float: left; background-image: url(http://moszczenica.info/podklad.jpg); border:1px; border-color:gray; width:150px; height:135px;'><a href=\"#\" onclick=\"emoticonAdd(':)');\"><img src='images/smiles/smile_angry.gif' alt=\":)\" border='0'></a></div><div><textarea style='background-image: url(http://moszczenica.info/podklad.jpg); border:1; border-color:lightgray;' id='form_text' rows='7' cols='40' style='width:250px; height:100px;'></textarea></div>";


nie może być: "onclick" - ponieważ strona się nie włączy musi być \"onclick\". Po kliknięciu w emotkę przenosi mnie do strony głównej.


Moje kolejny pytanie:
Kod
<script type="text/javascript">
function emoticonAdd(work) {
var element = document.getElementById('form_text');
element.innerHtml += 'czy coś tu mam wpisać' + work + 'czy coś tu mam wpisać';
/* albo element.value.innerHtml += ' ' + work + ' '; zapomniałem :D */
}
</script>




P.S To nie jest stronka w HTML, tylko to jest plik odpowiadający za komentarze i jest on w PHP.
erix
Cytat
Po kliknięciu w emotkę przenosi mnie do strony głównej.

Wystarczy, że funkcja podpięta do onclick zwróci false i nie przeniesie. Ładniej można zrobić przez przechwycenie zdarzenia i wykonanie e.preventDefault().
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.