Autor | Zpráva | ||
---|---|---|---|
mr.xik Profil * |
#1 · Zasláno: 6. 10. 2011, 23:44:15
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 |
#2 · Zasláno: 6. 10. 2011, 23:45:48
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 * |
#3 · Zasláno: 6. 10. 2011, 23:48:55
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 |
#4 · Zasláno: 6. 10. 2011, 23:51:05
mr.xik:
Klasicky přes ID toho divu zkopíruješ data z divu do textarea s nějakým ID. |
||
mr.xik Profil * |
#5 · Zasláno: 6. 10. 2011, 23:52:09
nějak teď nerozumím...
|
||
Medvídek Profil |
#6 · Zasláno: 6. 10. 2011, 23:58:23 · Upravil/a: Medvídek
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 * |
#7 · Zasláno: 7. 10. 2011, 00:02:34
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 |
#8 · Zasláno: 7. 10. 2011, 00:04:00
mr.xik:
Mužeš mu to dát třeba do onsubmit. |
||
mr.xik Profil * |
#9 · Zasláno: 7. 10. 2011, 00:13:34
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 |
#10 · Zasláno: 7. 10. 2011, 00:26:25
mr.xik:
Taky to dáváš trošku jinam. onsubmit patří do form. (ukázka) |
||
Chamurappi Profil |
#11 · Zasláno: 7. 10. 2011, 00:27:21
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 * |
#12 · Zasláno: 7. 10. 2011, 00:30:08
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 |
#13 · Zasláno: 7. 10. 2011, 00:33:13
mr.xik:
„action="test'"“ To je celekm divný, ne? printni si, co ti vubec vraci $_POST |
||
mr.xik Profil * |
#14 · Zasláno: 7. 10. 2011, 00:33:32
samozrejme toto je upraveny takze prosim nehledet na chybu v action a ze chybi echo'';... :)
|
||
Chamurappi Profil |
#15 · Zasláno: 7. 10. 2011, 00:34:07
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 * |
#16 · Zasláno: 7. 10. 2011, 00:34:10
Medvídek:
postnul jsem to tu a omylem umazal nez jsem to chtel postnou zpatky s opravou bylo pozde... |
||
mr.xik Profil * |
#17 · Zasláno: 7. 10. 2011, 00:44:29
jsem už docela bezradný, nevím jestli je chyba na straně JS nebo v PHP...:-/
|
||
o_O Profil |
#18 · Zasláno: 7. 10. 2011, 04:58:39
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]. |
||
Časová prodleva: 3 dny
|
|||
mr.xik Profil * |
#19 · Zasláno: 9. 10. 2011, 19:03:14
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; } |
||
o_O Profil |
#20 · Zasláno: 10. 10. 2011, 05:05:33
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. |
||
Časová prodleva: 13 let
|
0