| 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: 11 let
|
|||
0