Tudom, hogy sajnos nem lehet form a formban, így valami hasonló / kerülő megoldást keresek.
Legegyszerűbb, ha példával szemléltetem:
Egy komment szerkesztő felületről van szó. Egy oldalon x komment jelenik meg, ezeknek csak néhány adata (szerző, stb) és első pár szava jelenik meg egy div-ben. Ha erre a div-re kattintuk felbukkan a szerkesztő alatta (rejtett div) - ez a belső form.
Ezenkívűl jó lenne egy külső form, ami kommentenként 1 db checkboxot jelentene és ezt elküldve, csak törölni, jóváhagyni lehetne, de egyszerre többet.
A probléma az, hogy a rejtett szerkesztő formok is elküldésre kerülnek és nem látok rá módszert, hogy ne legyenek egymásba ágyazva.
2 kiútra tudok gondolni egyelőre, de egyik sem kielégítő:
- Az egész oldal egy form és elküldök mindent, ami magával hozná, hogy lassabb kapcsolattal piszok lassú lesz.
- Iframe-be kerülnek a szerkesztők. Ez méginkább kerülendő.
Van bárkinek más ötlete?
- 2150 megtekintés
Hozzászólások
A szerkesztőt ne közvetlen a commentekhez, hanem logikailag (kódban) a commentek után tedd, egyetlen div-be, amibe ajax/jquery-vel töltöd be mindig az adott commentet szerkesztésre.
Így a két független form-od nem egymásban lesz, hanem egymás után és egyszerre csak az egyiket használod.
- A hozzászóláshoz be kell jelentkezni
Igen, sejtettem, hogy ilyen módon megoldható, de az az igazság, hogy még javascripttel se foglakoztam igazán, nemhogy a jquery-vel (eddig sikerült szerver oldalon maradni).
Ha nincs más megoldás természetesen elkezdek utánanézni, de nem terveztem belemerülni a nyár előtt.
- A hozzászóláshoz be kell jelentkezni
Hany komment van egy oldalon? 10-50? Mekkora a maximum hossza az egyes mezoknek? Mennyi az eselye annak, hogy egy user tobb kommenthez szolna hozza egyszerre, es kuldene el igy?
Nem lesz olyan nagyon sok ha egy form az egesz. Atlag usernek fel sem tunik.
Ellenben ez tenyleg nem szep, sot, kifejezetten otromba megoldas. Javascript nem bonyolult, plane jQuery-vel, pikk-pakk meg lehet oldani a problemadat az itt javasolt modon :)
- A hozzászóláshoz be kell jelentkezni
szábszkrájb
- A hozzászóláshoz be kell jelentkezni
Egy ismerős segítségével megszületett egy piszok egyszerű függvény:
function editorDivAppend(id_in, id_out)
{
toggle_visibility(id_in); // ez csak a display css tulajdonságot váltogatja
var div_in = document.getElementById(id_in);
var div_out = document.getElementById(id_out);
if (div_in.innerHTML == "")
{
div_in.innerHTML = div_out.innerHTML;
}
else
{
div_in.innerHTML = "";
}
}
A szerkesztők így a lap végén bújkálnak és lenyitáskor lesz tartalmuk, becsukáskor ürülnek.
Ha nyitva maradnak véletlen, ugyanúgy elküldésre kerülnek.
Itt jött az ötlet, hogy a külső form elküldése előtt kiürítem az összes belsőt.
Így ha nem lenne JS engedélyezve, a belső formok továbbra is működnek.
Ehhez viszont jquery és class alapján lehetne üríteni.
Kösz a rávezetést.
Szerk.: Ennél egyszerűbb nem is lehetne. :)
Ennyi (a külső submit-re):
onClick="$('.need_empty').empty();"
- A hozzászóláshoz be kell jelentkezni
Ok, következő probléma:
IE és Opera el se küldi a külső formot, ürítéstől függetlenül, mert látja a belsőt...
- A hozzászóláshoz be kell jelentkezni
<input type="submit" value="szerkesztoformot" name="mitkuldtunk">
<input type="submit" value="moderalocsekkboxokat" name="mitkuldtunk">
szerveroldalon:
processform () {
if (post['mitkuldtunk'] == 'szerkesztoformot'){
szerkeszdaztaszegenypostot()
} else {
moderaldkioket()
}
}
Referencia:
http://www.w3.org/TR/html401/interact/forms.html#h-17.13.2 (submit buttonra vonatkozo resz)
http://www.w3.org/TR/html401/interact/forms.html#submit-button (Hanyat tartalmazhat)
Igy?
- A hozzászóláshoz be kell jelentkezni
Esetleg (ha tenyleg nem akarod elkuldeni azt a szegeny formot duplan):
n + 1 form. n szerkesztoform, +1 a moderaloform.
A moderaloform elemei rejtettek (CSS), ha valaki rakattint a pipara, akkor te a rejtett formban js-sel allitod az erteket, pl.
function onModerateClick(){
var elem_id = this.id;
var rejtett_elem_id = "rejtett_" + elem_id;
var rejtett_elem = document.getElementById(rejtett_elem_id);
rejtett_elem.value = this.value;
}
<input id="moderate_post_123" type="checkbox" onclick="onModerateClick()"> ...
lejjebb:
<form>
<form name="moderaloform">
<div class="rejtett">
<input id="rejtett_moderate_post_123" type="checkbox"></div>
<input type="submit" value="kijeloltek kirakasa a francba"/>
</form>~
Es akkor itt kihasznaltuk, hogy eval eseten a this az az adott elem; no jQuery, no fancy stuff.
Persze nem kene evalt hasznalnod (tehat elemneve onClick="bela()" nem divat), nem kene function statementet hasznalnod (function fuggvenynev nemdivat), de elsore megteszi. :)
Utana meg: http://uk.video.yahoo.com/watch/111593 (a negy resz szumma egy ora, egyszer tul kell elni; az elso reszeiben unalmas, de megeri)
- A hozzászóláshoz be kell jelentkezni
Sajnos még így sem lesz jó.
Eddig a külső formra koncentráltunk, azonban JS-sel beillesztve vagy anélkül, így a belső nem fog működni.
Illetve IE és Opera alatt a külső, JS-sel beillesztve a belsőket, se működik.
Úgyhogy végül 1 form marad. Továbbra is a form után tettem a belső szerkesztőket, hogy csak az legyen elküldve, amit egyszer már lenyitottunk.
Így lehet egyszerre több kommentet szerkeszteni és külön kijelölni (a kijelölés még nem vonja magával a betöltést) úgy, hogy nem kell elküldeni az egész oldalt.
A szerver oldal már gyerekjáték. Először a kijelölés típusának megfelelő 1 SQL parancs, ami töröl, stb, lefut a kijelölt azonosítókra.
Aztán ha maradt még használható adat a POST-ban, akkor egyesével szerkeszti, amit kell.
Köszönöm a segítséget.
Ha komolyabb JS alapú dolgokra is szükségem lesz esetleg, akkor ExtJS felé veszem az irányt. :)
- A hozzászóláshoz be kell jelentkezni
De miert kene kivul formnak lennie?
A checkboxot a hozzaszolasok mellett - bar nem szabalyos - meg fogja jeleniteni a bongeszo form nelkul is; ha meg nem tetszik, hasznalj linket helyette.
Ext JS mas vilag, kliens-szerver architektura, szeretem, rengeteg hibaja es belso rondasagai ellenere. Csak intranetes alkalmazasokra hasznald, nemcsak licenc, de feluletokok miatt is.
- A hozzászóláshoz be kell jelentkezni
Ha nincs formban, hogy küldöd el őket (mindenféle további JS kavarás nélkül) ?
Így a legjobb, ahogy most van, mert ha csak a boxokat használod, csak azok lesznek elküldve, de lehet egyszerre akár több kommentet is szerkeszteni.
- A hozzászóláshoz be kell jelentkezni
Szia!
Lesd meg ennek a fórum részét: https://github.com/czettnersandor/carpopularizer
élesben itt láthatod:
- A hozzászóláshoz be kell jelentkezni
Itt valami másról van szó: http://img191.imageshack.us/img191/2251/commenteditor.jpg
- A hozzászóláshoz be kell jelentkezni