Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [JavaScript][PHP] tinymce z dopisywaniem tekstu przy kliknięciu
Forum PHP.pl > Forum > Przedszkole
dentopolis
mam pole textarea z tinymce. poniżej w spanach jakieś słowa. chcę aby po kliknięciu na nie, wyświetlały się w polu textarea i dopisywały się tam gdzie kursor a nie zawsze na końcu. już mi to działało ale gdzieś mam teraz błąd i nie mogę dostrzec czemu to przestało działać.

kod źródłowy jest tutaj: http://www.dentopolis.org/opisywanie.txt

a tak wygląda strona:


czy ktoś wie jak to rozwiązać?

bardzo proszę o pomoc.
trueblue
Sprawdź różnice między atrybutami id a class elementu - jak się je nadaje, a w związku z tym jak pobiera. Przeanalizuj jak to zrobiłeś na elemencie <textarea>.
Polecam Ci też to: https://www.w3schools.com/js/js_syntax.asp (sekcja: JavaScript is Case Sensitive).

A gdybyś zajrzał do konsoli przeglądarki, to widziałbyś błąd. I być może nie wskazywałby wprost na rozwiązanie, ale byłbyś bliżej.
dentopolis
hmm..poprawiłem klasę oraz id textarea:
<textarea id='tinymce' class='mce-content-body' name='procedury'></textarea>

skrypt wygląda tak:
http://www.dentopolis.org/opisywanie.php

a kod źródłowy:
http://www.dentopolis.org/opisywanie.txt

ale nadal mam w konsoli błąd: ReferenceError: $ is not defined
viking
A dołączyłeś jquery?
dentopolis
gdy dołączam:
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>

textarea w ogóle się nie pokazuje.konsola:
TypeError: tinymce.util is undefined[Learn More] theme.min.js:1:758
TypeError: b is not a constructor
trueblue
https://api.jquery.com/jquery.noconflict/
dentopolis
czy tak powinno być?
  1. <script src="https://cloud.tinymce.com/stable/tinymce.min.js?apiKey=fhjz0rdlcqb3kpk3jspqplipoqyw7x045rl7sdstg3myq2ir"></script>
  2. <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
  3. <script>
  4. jQuery.noConflict();
  5. (function( $ ) {
  6. $(function() {
  7. tinymce.init({
  8. selector:'textarea',
  9. formats : {
  10. p : {selector : 'textarea', classes : 'full'},
  11. },
  12. content_style: "body {text-align: justify;}",
  13. menubar:true,
  14. statusbar: false,
  15.  
  16. });
  17. });
  18. })(jQuery);
  19.  
  20.  
  21. </script>
  22.  
  23. <textarea id='tinymce' class='mce-content-body' name='procedury'></textarea>
  24.  
  25.  
  26.  
  27.  
  28. <table id="procedury" class="table table-striped">
  29. <tbody>
  30. <tr><td class="text-center">
  31. <span>przejaĹ&#8250;nienia mogÄ…ce sugerować prĂłchnicÄ™: </span>
  32. <span>kamieĹ&#8222; nazÄ™bny, </span>
  33. <span>zmiany zapalne w okolicy wierzchoĹ&#8218;kĂłw korzeni: </span>
  34. <span>kieszenie kostne w okolicy: </span>
  35. </td></tr>
  36.  
  37. <tr><td class="text-center">
  38. <SPAN>ognisk zapalnych w okolicy wierzchoĹ&#8218;kĂłw korzeni nie stwierdza siÄ™, </SPAN>
  39. <span>brak kieszeni kostnych, </span>
  40. <span>caries profunda primaria kl., </span>
  41. <span>caries profunda secondaria kl., </span>
  42. </td></tr>
  43. </tbody>
  44. </table>
  45.  
  46. <script>
  47. var tinymce = $( ".mce-content-body" );
  48. var procedury = document.getElementById('procedury');
  49. // add one event handler to the table
  50. procedury.onclick = function (e) {
  51. // normalize event
  52. e = e || window.event;
  53. // find out which element was clicked
  54. var el = e.target || e.srcElement;
  55. // check if it's a procedury cell
  56. if (el.nodeName.toUpperCase() == "SPAN") {
  57. // append it's content to the tinymce
  58. //tinymce.value += (el.textContent || el.innerText);
  59. // tinymce.append(el.textContent);
  60. tinyMCE.activeEditor.execCommand('mceInsertContent', false, (el.textContent));
  61. }
  62. }
  63. </script>


teraz wyświetla się pole textarea z tinymce ale klikanie w słowa w spanach nadal nie powoduje wrzucenia tekstu do textarea.
trueblue
Wziąłeś przykład z dokumentacji, ale użyłeś go odwrotnie. Do środka wrzuciłeś wywołanie tinyMCE, które prawdopodobnie korzysta z $ jako aliasu jakiejś swojej funkcji, a na zewnątrz nadal pozostało wywołanie jQuery.
viking
Inna sprawa że tinymce ma dowiązanie do jquery. https://www.tinymce.com/docs-3x/reference/T...@jQuery_Plugin/
dentopolis
o nie mogę! działa smile.gif haha

http://www.dentopolis.org/opisywanie.php
dzięki wielkie!
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.