Autor Zpráva
mr.xik
Profil *
Zdravím vás,
řeším drobný problém. Vytvářím si wysiwyg editor a potřebuji z něj informace odeslat do DB. Wysiwyg jede jako div s možností contenteditable a js scriptem. PProblém nastává když ho chci odeslat do DB - nepošle se nic a vypíše se chybová hláška Notice: Undefined index: editor in. Lze nějakým způsobem odeslat obsah divu? name mam nastavený dobře ale prostě to nebere. . Předem díky...
Medvídek
Profil
mr.xik:
Napadá mě si tam přihodit schovanou textareu a před odesláním si js zkopírovat obsah divu do te schovane textarea.
mr.xik
Profil *
můžu se zeptat jak to přesně udělat? on je problém i ten, že vytahuju data z DB - ty upravím v editoru a chci je vrátit zpět. Jak se dá udělat ono "překopírování obsahu do textarey?" :)
Medvídek
Profil
mr.xik:
Klasicky přes ID toho divu zkopíruješ data z divu do textarea s nějakým ID.
mr.xik
Profil *
nějak teď nerozumím...
Medvídek
Profil
mr.xik:
<script>
  function kopiruj(){
   var co = document.getElementById('div').innerHTML;
   var kam = document.getElementById('textarea');
   kam.innerHTML = co;
  }
</script>
  
<div id="div">data</div>
<textarea id="textarea"></textarea>
<a onclick="kopiruj();">kopci</a>
mr.xik
Profil *
Skvělé, mockrát díky. Ještě dotaz, lze použít fci onclick="kopiruj()" i přímo v submit inputu? ( aby se obsah nakopiroval drive nez se odešle) nebo je to třeba provést takto? Každopádně ještě jednou mockrát díky :)
Medvídek
Profil
mr.xik:
Mužeš mu to dát třeba do onsubmit.
mr.xik
Profil *
Nevím proč, ale script nepracuje...neodešle se upravená verze. Možná je to inputem nevím jestli je dobře:
<input type="submit" name="Submit" value="Submit" onsubmit="kopiruj()">
Medvídek
Profil
mr.xik:
Taky to dáváš trošku jinam. onsubmit patří do form. (ukázka)
Chamurappi
Profil
Reaguji na mr.xika:
Většina běžně šířených WYSIWYGů postupuje podobně ošklivě, jako skript doporučený Medvídkem. Webový prohlížeč má v sobě editor, člověk si do něj vesele napíše a natahá, co se mu zlíbí, nechá odeslat formulář, skript požádá prohlížeč o serializaci DOMu (tedy o zjištění innerHTML), prohlížeč mu něco naplive (různé prohlížeče plivou různé věci různě), to se pošle na server a pak skript na straně serveru zkoumá, co mu vlastně přišlo, analyzuje HTML znak po znaku a atribut po atributu (v podstatě si ho přeserializuje) a vyhazuje z kódu vše, co se nehodí.

Zkus to jinak. Nečti innerHTML. Sestav si vlastní serializaci z DOMu přímo v prohlížeči — projdi rekurzivně childNodes toho <div>u. Co se hodí, to si připiš do odesílaného formulářového prvku, a co se nehodí, to jednoduše vynech. Je to elegantnější a pohodlnější než patlat se s řetězcem na straně serveru, navíc pak ani nemusíš (tolik) přemýšlet nad synchronizací klientské a serverové části, protože vše významné se odehraje u klienta.

Nevím proč, ale script nepracuje...
Najdi si, na který element patří onsubmit.
mr.xik
Profil *
omlouvam se, popletl jsem to presto jsem to dal do form ale stale nechce fungovat... viz. kod.


   function kopiruj(){
   var co = document.getElementById('editor').innerHTML;
   var kam = document.getElementById('textarea');
   kam.innerHTML = co;
  }



if(isset($_POST["sent"])) {

  $obsah=$_POST['textarea'];
  $id=$_POST['id'];
    
  $sql="UPDATE stranky SET obsah='$obsah' WHERE id='$id'";

  }


<form name="form1" method="post" action="test'" onsubmit="kopiruj();">
<div id="editor" name="editor"  contenteditable>'$rows[obsah]'</div>
<textarea id="textarea" name="textarea" style="display:none;"></textarea>
<input type="hidden" name="sent">
<input type="submit" name="Submit" value="Submit"></form>
Medvídek
Profil
mr.xik:
action="test'"
To je celekm divný, ne? printni si, co ti vubec vraci $_POST
mr.xik
Profil *
samozrejme toto je upraveny takze prosim nehledet na chybu v action a ze chybi echo'';... :)
Chamurappi
Profil
Reaguji na mr.xika:
Nastavuješ innerHTML pro <textarea>, což je nesmysl (byť to v některých prohlížečích funguje). Nastavuj value.
mr.xik
Profil *
Medvídek:
postnul jsem to tu a omylem umazal nez jsem to chtel postnou zpatky s opravou bylo pozde...
mr.xik
Profil *
jsem už docela bezradný, nevím jestli je chyba na straně JS nebo v PHP...:-/
o_O
Profil
mr.xik:
Čtete vůbec, co píše Chamurappi? Očividně ne.

Nikdo Vám tady nebude psát hotový script - chyba je v [#15].
mr.xik
Profil *
aha omlouvám se, zkoušel jsem to, ale nejsem si jist, zda-li jsem to napsal dobře. Je to tedy uprava na
   function kopiruj(){
   var co = document.getElementById('editor').value;
   var kam = document.getElementById('textarea');
   kam.value = co;
  }
. Je třeba upravit i samotný formulář nějakým způsobem?
o_O
Profil
mr.xik:
U Vás je asi zbytečná jakákoliv snaha. Přečtěte si ještě jednou pořádně [#15] a podívejte se na Vaši funkci.

Buďto zběsile čtete celý příspěvek najednou a chybně, nebo vůbec nevíte která bije a je třeba si prostudovat alespoň nějaké základy javascriptu. Tohle bude ještě zajímavé s tím, že vytváříte editor, což je z drtivé většiny dělané v javascriptu.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0