Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] wstawianie tekstu do textarea z tinymce
Forum PHP.pl > Forum > Przedszkole
dentopolis
mam textarea z tinymce.działa.
drugi skrypt stąd: js bin działa.
ale przestaje działać gdy połączę obydwa czyli gdy <textarea id='textbox'></textarea>

jak mogę to poprawić?
Niree
Kliknij sobie prawym na tinyemce i pobierz identyfikator pola, w którym znajduje się tekst. Edytory działają tak, że tworzą nam zamiast textarea jakieś divy i inne cuda. Dlatego jak określiłeś identyfikator "textarea", to nie ma znaczenia, bo tekst musi być wstrzyknięty do kontenera edytora.
dentopolis
tinymce nadaje polu textarea id="tinymce", jednak gdy zmieniłem w kodzie na takie id to nadal nie działa:

  1. <textarea id='tinymce'></textarea>
  2.  
  3. <script>
  4. var tinymce = document.getElementById('tinymce');
  5. var procedury = document.getElementById('procedury');
  6. // add one event handler to the table
  7. procedury.onclick = function (e) {
  8. // normalize event
  9. e = e || window.event;
  10. // find out which element was clicked
  11. var el = e.target || e.srcElement;
  12. // check if it's a procedury cell
  13. if (el.nodeName.toUpperCase() == "TD") {
  14. // append it's content to the tinymce
  15. tinymce.value += (el.textContent || el.innerText);
  16. }
  17. }
  18. </script>
Niree
Ty w ogóle nie ogarniasz co się do Ciebie pisze. Kliknij prawym na tinymce i zobacz w kod HTML, tam nie ma tylko textarea. Skrypt tinymce dodał własne iframki i divy.
To czego szukasz to klasa "mce-content-body"

Użyj jquery do wstrzyknięcia tekstu:

  1. var tinymce = $( ".mce-content-body" );
  2. var procedury = document.getElementById('procedury');
  3. // add one event handler to the table
  4. procedury.onclick = function (e) {
  5. // normalize event
  6. e = e || window.event;
  7. // find out which element was clicked
  8. var el = e.target || e.srcElement;
  9. // check if it's a procedury cell
  10. if (el.nodeName.toUpperCase() == "TD") {
  11. // append it's content to the tinymce
  12. //tinymce.value += (el.textContent || el.innerText);
  13. tinymce.append(el.textContent);
  14. }
  15. }
dentopolis
sorry za brak zrozumienia, staram się na ile mogę, ale programowanie to nie moja dziedzina. jaką funkcją mam "wstrzyknąć" ten tekst do pola?
trueblue
  1. tinyMCE.activeEditor.execCommand('mceInsertContent', false, "tekst do wstawienia w pozycji kursora");
dentopolis
super.działa.dzięki.

  1. <script>
  2. var tinymce = $( ".mce-content-body" );
  3. var procedury = document.getElementById('procedury');
  4. // add one event handler to the table
  5. procedury.onclick = function (e) {
  6. // normalize event
  7. e = e || window.event;
  8. // find out which element was clicked
  9. var el = e.target || e.srcElement;
  10. // check if it's a procedury cell
  11. if (el.nodeName.toUpperCase() == "TD") {
  12. // append it's content to the tinymce
  13. //tinymce.value += (el.textContent || el.innerText);
  14. // tinymce.append(el.textContent);
  15. tinyMCE.activeEditor.execCommand('mceInsertContent', false, (el.textContent));
  16. }
  17. }
  18. </script>



ten kod powyżej działa jeśli chcę kliknąć tekst w komórce tabeli, ale jak powinien wyglądać jeśli tekst jest np.w divie po prostu oddzielany przecinkami np. badanie, przegląd, konsultacja?
trueblue
Wstaw je do osobnych elementów, np. <span>, albo do <li> (wtedy nie <div> a <ul>). Przecinki ustaw za pomocą pseudoselektora ::after.
dentopolis
a mogę prosić o pomoc w samym kodzie?
rozumiem że sam tekst ma wyglądać tak:<span class="leczenie">test1</span>, <span class="leczenie">test2</span>
dentopolis
próbuję tak:
  1. <div id="leczenie">
  2. <span>Item A</span>
  3. <span>Item B</span>
  4. </div>
  5. <script type="text/javascript">
  6. // locate your element and add the Click Event Listener
  7. document.getElementById("leczenie").addEventListener("click",function(e) {
  8. // e.target is our targetted element.
  9. // try doing console.log(e.target.nodeName), it will result LI
  10. if(e.target && e.target.nodeName == "span") {
  11. console.log(e.target.id + " was clicked");
  12. }
  13. });
  14. </script>


jak dotąd nie działa, ale tak czy inaczej potrzebuję, żeby kliknięty tekst nie wyskakiwał w konsoli ale był dodany do mojego tinymce (kod powyżej)
trueblue
SPAN nie span.
dentopolis
<div id="leczenie">
<span>Item A</span>
<span>Item B</span>
</div>
<script type="text/javascript">
// locate your element and add the Click Event Listener
document.getElementById("leczenie").addEventListener("click",function(e) {
// e.target is our targetted element.
// try doing console.log(e.target.nodeName), it will result LI
if(e.target && e.target.nodeName == "SPAN") {
console.log(e.target.id + " was clicked");
}
});
</script>
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.