Autor | Zpráva | ||
---|---|---|---|
freewill Profil |
#1 · Zasláno: 23. 8. 2007, 08:34:25 · Upravil/a: Moderátor (editace znemožněna) 15. 8. 2014, 10:18:24
Mam takovy jednoduchy script ajax pro autmaticke nacitani z databaze tzn vyberu z selextboxu polozku a podle id vypisuju data z databaze...pod selectboxem mam jeste textarea defaultne mam nastaveny TinyMCE na kazdou textareu coz mi samozrejme bezproblemove funguje problem nastane az tehdy kdyz vyberu polozku z selextboxu a nactou se mi data...pak se tinymce nezobrazi a zobrazi se ciste textarea nevite cim to muze byt?
prikladam ten script: function dopln() { var url = "aktuality.php?c=nova-aktualita&ch=zapas&id="+document.getElementById( 'zapas')[document.getElementById('zapas').selectedIndex].value; if(window.XMLHttpRequest) { httpRequest = new XMLHttpRequest(); } else if(window.ActiveXObject) { httpRequest = new ActiveXObject("Microsoft.XMLHTTP"); } httpRequest.open("GET", url, true); httpRequest.onreadystatechange = neco; httpRequest.send(null); } function neco() { if(httpRequest.readyState == 4) { if(httpRequest.status == 200) { document.body.innerHTML = httpRequest.responseText; } else { alert("Problém s načítání dat:" + httpRequest.statusText); } } } |
||
Časová prodleva: 7 let
|
|||
Sabracon Profil |
#2 · Zasláno: 15. 8. 2014, 00:46:16
Ahoj,
mám úplně stejný problém jako předchozí příspěvěk. Prohledal jsem net a nenašel uspokojivou odpověď. Mám editaci klienta, kterého načtu přes select pomocí ajaxu. Dynamicky se mi zobrazí <inputy s údaji> a já mohu editovat a nasledně uložit, to funguje. Nainstaloval jsem Tinymce, který mi jinde na webu funguje a ukládá data jak má. Problém nastane, když si ho načtu pomocí Ajaxu tak <textarea> se mi nezmění a tinymce se nezobrazí . Věděl by jste kde dělám chybu nebo mě trochu nakopl jak postupovat? Děkuji mnohokrát :) <script> function showUser(str) { if (str=="") { document.getElementById("txtHint").innerHTML=""; return; } if (window.XMLHttpRequest) { // code for IE7+, Firefox, Chrome, Opera, Safari xmlhttp=new XMLHttpRequest(); } else { // code for IE6, IE5 xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); } xmlhttp.onreadystatechange=function() { if (xmlhttp.readyState==4 && xmlhttp.status==200) { tinyMCE.execCommand('mceAddControl', false, xmlhttp.responseText); document.getElementById("txtHint").innerHTML=xmlhttp.responseText; } } xmlhttp.open("GET","/php/edit_kli/getuser.php?q="+str,true); xmlhttp.send(); } </script> a nastavení Tinymce <script type="text/javascript" src="http://www.xxx.cz/php/tinymce/js/tinymce/tinymce.min.js"></script> <script> tinymce.init({ selector: "textarea#elm1", language: "cs", theme: "modern", width: 480, height: 240, plugins: [ "advlist autolink link image lists charmap print preview hr anchor pagebreak spellchecker", "searchreplace wordcount visualblocks visualchars code fullscreen insertdatetime media nonbreaking", "save table contextmenu directionality emoticons template paste textcolor" ], content_css: "css/content.css", toolbar: "insertfile undo redo | styleselect | bold italic | alignleft aligncenter alignright alignjustify | bullist numlist outdent indent | l ink image | print preview media fullpage | forecolor backcolor emoticons", style_formats: [ {title: 'Bold text', inline: 'b'}, {title: 'Red text', inline: 'span', styles: {color: '#ff0000'}}, {title: 'Red header', block: 'h1', styles: {color: '#ff0000'}}, {title: 'Example 1', inline: 'span', classes: 'example1'}, {title: 'Example 2', inline: 'span', classes: 'example2'}, {title: 'Table styles'}, {title: 'Table row 1', selector: 'tr', classes: 'tablerow1'} ] }); </script> tady je úryvek kodu, který volám pomocí ajaxu, echo "<td colspan=2><textarea id='elm1' name='popis' value='" . $row['popis'] . "'>" . $row['popis'] . "</textarea></td>"; |
||
_es Profil |
#3 · Zasláno: 15. 8. 2014, 01:47:19
Sabracon:
Príkaz v druhom kóde tinymce.init({... je vykonaný len pri načítaní stránky a „aktivuje“ len textarey, ktoré vtedy na stránke existujú. Ak chceš „aktivovať“ textarey dynamicky pridané neskôr, musíš ich tiež „aktivovať“ podľa dokumentácie k TinyMCE.
|
||
Sabracon Profil |
#4 · Zasláno: 15. 8. 2014, 08:23:57
Takže jestli jsem to pochopil správně. Musím ještě dopsat "něco" do kódu, v <head></head>, aby se Tinymce dynamicky načetl ?
|
||
_es Profil |
Sabracon [#4]:
Nie, TynyMCE stačí „načítať“ raz - súbor tinymce.min.js . Musíš to „niečo“ (asi metódu tinymce.init ) dať do kódu tak, aby sa to „aktivovalo“ pre dynamicky pridané elementy až po ich vytvorení, teda v prvom kóde niekde medzi 15. a 17. riadok.
|
||
Sabracon Profil |
#6 · Zasláno: 15. 8. 2014, 09:06:51
Tak teď jsem docílil toho po přidání do kodu:
<script> function showUser(str) { if (str=="") { document.getElementById("txtHint").innerHTML=""; return; } if (window.XMLHttpRequest) { // code for IE7+, Firefox, Chrome, Opera, Safari xmlhttp=new XMLHttpRequest(); } else { // code for IE6, IE5 xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); } xmlhttp.onreadystatechange=function() { if (xmlhttp.readyState==4 && xmlhttp.status==200) { document.getElementById("txtHint").innerHTML=xmlhttp.responseText; var tinymce_url = 'http://tinymce.cachefly.net/4.0/'; jQuery.getScript(tinymce_url+"jquery.tinymce.min.js").done(function(){ $('textarea').tinymce({ script_url: tinymce_url+'tinymce.min.js', language: "cs", theme: "modern", plugins: [ "advlist autolink lists link image charmap print preview anchor", "searchreplace visualblocks code fullscreen", "insertdatetime media table contextmenu paste" ], toolbar: "insertfile undo redo | styleselect | bold italic | alignleft aligncenter alignright alignjustify | bullist numlist outdent indent | link image" }); }); } } xmlhttp.open("GET","/php/edit_kli/getuser.php?q="+str,true); xmlhttp.send(); } </script> tak při prvním vybrání v Selectu se mi již objeví Tinymce a dokonce to i ukládá upravený text. Ale když bez refreshe stránky hned vyberu jiného klienta v selectu, tak tinymce se již nenačte a textarea zmizí. Tím stylem, že na chviličku ji vidím a po sekundě zmizne, jako by se snažil načíst tinymce ale marně. Přidal jsem kod od 19 do 35 řádku. |
||
_es Profil |
|||
Sabracon Profil |
#8 · Zasláno: 15. 8. 2014, 10:08:58
Právě javascript ještě dobře neovládám. Ten kód jsem našel na netu. Sice fungoval, ale napůl. Mohl by mi někdo napsat konkretní kód jak znovu zavolat tinymce přes ajax viz [#5]. Děkuji.
|
||
Chamurappi Profil |
#9 · Zasláno: 15. 8. 2014, 10:15:07
Reaguji na Sabracona:
Co je nejasného na radě v [#5], tedy dát tinymce.init dovnitř funkce volané po načtení <textarea> , s níž má tinymce.init pracovat?
|
||
Sabracon Profil |
#10 · Zasláno: 15. 8. 2014, 11:07:18
A co tedy dělá příkaz " tinyMCE.execCommand('mceAddControl', true, edId); " ten všude píšou se spojením dynamického načítání Tinymce. ale nefunguje mi. Nebo spíše nevím jak bych měl zapsat vyvolání tinymce.init jak píšete.
|
||
Chamurappi Profil |
#11 · Zasláno: 15. 8. 2014, 11:28:30
Reaguji na Sabracona:
Aha, to je asi také možnost. „co tedy dělá příkaz“ Proč se ptáš nás a ne vyhledávače? Našel bys oficiální dokumentaci. Třetí argument má být id elementu, který se na nahradit za WYSIWYG. Podívej se, co dáváš jako třetí argument ve svém kódu…
|
||
Sabracon Profil |
#12 · Zasláno: 15. 8. 2014, 12:13:10
ID mám normálně elm1 viz kod . ale nic se nestane když to tam dam. Jediné co trochu fungovalo byl ten script pres jquery.
|
||
Chamurappi Profil |
#13 · Zasláno: 15. 8. 2014, 12:37:05
Reaguji na Sabracona:
„ID mám normálně elm1 viz kod .“ Ne, jako id tam dáváš xmlhttp.responseText , viz tvůj řádek 16.
|
||
Časová prodleva: 10 let
|
0