- gban: Ingyen kellene, de tegnapra
- Luck Dragon: Asszociációs játék. :)
- sziku69: Fűzzük össze a szavakat :)
- sziku69: Szólánc.
- GoodSpeed: Samsung 980 PRO 1TB M.2 (MZ-V8P1T0BW) vs Samsung 990 PRO 2TB M.2 (MZ-V9P2T0BW)
- Magga: PLEX: multimédia az egész lakásban
- Gurulunk, WAZE?!
- Parci: Milyen mosógépet vegyek?
- ldave: New Game Blitz - 2025
- ubyegon2: Airfryer XL XXL forrólevegős sütő gyakorlati tanácsok, ötletek, receptek
Új hozzászólás Aktív témák
-
Karma
félisten
válasz
Sk8erPeter #2199 üzenetére
Home userekkel meg az ő irányukba dolgozó fejlesztőkkel még működne is. De mi van, ha a megrendelőd egy többtízezer főt mozgató multi? Nekik nem lehet olyan simán bemutatni
-
Sk8erPeter
nagyúr
válasz
trisztan94 #2183 üzenetére
Most volt egy kis időm, megnéztem jobban, szerintem pont nem szar a dokumentációja. Legalábbis ahogy elnéztem, pont leírja, mi mire való, és példát is mutat rá. Demóoldal is van külön.
$.address.change(function(event) {
// do something depending on the event.value property, e.g.
// $('#content').load(event.value + '.xml');
});
$('a').click(function() {
$.address.value($(this).attr('href'));
});======
(#2198) martonx : hát azt tudom.
Amúgy teljesen jogos is, én meg tudod, hogy egyetértek.
Ha tehetném. a neten lévő összes oldalra kiraknék IE9 alatti böngésző detektálására scriptet és szerveroldali kódot is, és egyik oldalon sem biztosítanék outputot annak, aki ilyen retket használ.(Csak olyat, amiben egy-két kedves szóval illetem a böngészőjét.) Hadd legyenek ösztönözve egy kicsit a felhasználók és a fejlesztők egyaránt...
-
martonx
veterán
válasz
Sk8erPeter #2194 üzenetére
Tudod, hogy nem érdekelnek a szutykos IE-k.
IE9 alatt számomra nem létezik böngésző.
-
Sk8erPeter
nagyúr
válasz
trisztan94 #2196 üzenetére
ha a "az urlt rendesen irja ki" azt jelenti, hogy hash nélkül, akkor jogos, vhogy úgy emlékeztem, hogy ennél a modern böngészőkben ahhoz hasonlóan változtatja az URL-t, ahogy Te elvárnád, viszont van fallback hash fragment segítségével...
Akkor bocsánat, tévedtem, rosszul emlékeztem...Viszont most néztem meg IE8-ban, és az általad preferált Address plugin pont úgy működik, ahogy fentebb vakerásztam a másik pluginről, de ezek szerint pedig akkor az általam ajánlott ezt mégsem tudja, mert ott mindenképp hash fragmentekkel dolgozik.
My bad, akkor visszavonom.
Szóval használd ezt, ja.
Tehát pl. ez a cím jelenik meg Chrome-ban oldal-újratöltés nélkül, ahogy kell, ráklattyintáskor:
http://www.asual.com/jquery/address/samples/express/about
de ez IE8-ban:
http://www.asual.com/jquery/address/samples/express/#/aboutMost jó sokat dumáltam úgy, hogy végül kiderült, hogy nincs is igazam.
Hát érted, néha ilyennek is kell történnie.
-
trisztan94
őstag
válasz
Sk8erPeter #2195 üzenetére
Igazabol de.
Azert tetszett ez jobban, mint a tobbi (pl hashchange) mert itt az urlt rendesen irja ki (marmint a demoban..: valami.dom/ajaxolt.html)
Mig a hashchange igy:
Valami.dom/#/ajaxolt.html.De kiemelnrm hogy a bbqt nem neztem meg, jol nez ki, megnezem majd! Koszi!
-
Sk8erPeter
nagyúr
válasz
Sk8erPeter #2194 üzenetére
Jó, most látom, hogy f@×zságot írtam, mert azt a kommentet nem az Addressre írják, hanem erre.
(ja, és ami nem a harmadikként, hanem másodikként linkelt oldalon van)
Bocs, tegnap már kissé fáradt voltam.
Most ránéztem a honlapjukra, meg megnéztem a GitHubos projektoldalt, ott 2013. január végi commitok is vannak.
Akkor sorry.
Hát nem tom, melyik a "jobb", majd Te eldöntöd magadnak.Mondom, a bbqplugin, amit én ajánlottam, az bekerült a Drupalba, gondolom vmi oka csak volt, meg Ben Alman pluginjeiben már bízom, mert amit láttam tőle, az jó vóóót, szóval én pusztán szubjektív döntés alapján választanám azt.
Mindenesetre az semmiképpen sem érv, hogy egy plugineket top 10/20/30/100/12337612-listába tévő oldal hányadikként tüntet fel egy adott plugint...
De teljesen mindegy, ha működik mindkettő, és jól, vannak elégedett felhasználói mindkettőnek, akkor az a lényeg, hogy faszán megy, nem?
Szóval dönts szimpátia alapján, jó lesz ez a jQuery (és nem "Jquery") Address Plugin is.
-
Sk8erPeter
nagyúr
válasz
trisztan94 #2192 üzenetére
Ja, sehol nem írták, hogy jobb lenne...SŐT, pont az általad harmadikként linkelt topicban írták buzinagy betűkkel, hogy "THIS PLUGIN IS NO LONGER MAINTAINED! (2012-02-25) Please use other plugins like jQuery hashchange. – Xitcod13 Aug 13 '12 at 22:20"
Ja, meg az sem mindegy, hogy majd' egy évvel korábban született az a hsz., amiben azt ajánlják.
"Ja, meg itt is a harmadik helyen van"
Most ez komoly?És akkor mi van?
(#2193) martonx :
az azért nagyon nem mindegy, hogy van-e fallback, már ha jól értem, amit mondasz, hogy a szutykos IE-kben is működjön. -
martonx
veterán
válasz
trisztan94 #2192 üzenetére
Én valamelyik jquery history plugint használom, de annyira nem vagyok elégedett vele. Ráadásul manapság semmibe nem kerül megírni azt az 1-2 sornyi js-t, ami ugyanezt csinálja.
-
trisztan94
őstag
válasz
Sk8erPeter #2189 üzenetére
-
Sk8erPeter
nagyúr
Nincs mit, de amúgy csak azért linkeltem azt a hsz.-t, mert találkozhatsz olyan problémával, ami miatt mindkettő kell: event.preventDefault() ÉS event.stopPropagation() - ami ekvivalens a return false-szal (tehát hogy esetleg nem elég csak az event.stopPropagation()). Ezt a részt nem muszáj lecserélned, ha működőképes a kódod, de nem árt, ha tudsz róla.
-
Muton
addikt
válasz
Sk8erPeter #2189 üzenetére
köszönöm a linket!
amint "kiörültem" a saját megoldásomat, át fogom írni a javasoltakra
meg a live-ot is cserélni fogom -
Sk8erPeter
nagyúr
válasz
trisztan94 #2185 üzenetére
Na, linkeld már be plíz, ahol írják stackoverflow-n, hogy ez jobb, kíváncsi vagyok az indokokra. Kösz!
(#2186) Muton :
a .live() deprecated. .on()-t érdemes helyette használni.
Amúgy a callback-be tett sima return false; is megoldja:
http://prohardver.hu/tema/jquery_kerdesek/hsz_2110-2110.html -
Muton
addikt
válasz
trisztan94 #2187 üzenetére
thx! közben sikerült megoldani, méghozzá úgy, hogy a belső.click-be tettem egy event.stopPropagationt, úgyhogy nem hívja meg a külső.clicket
-
Muton
addikt
Heló!
van egy divem, abban egy másik div.
szeretnék mind a külsőnek (a belső rész nélkül) és a belsőnek is egy egy hover és click eseményt.csináltam már ilyet, a megoldás a $('.kolso').click(function(e) {
if (e.target == this) {
// ide jön a külsőre vonatkozó klikk esemény
}
});most a div-ek dinamikusan vannak generálva, így nem sima click(function ...) van rájuk kötve, hanem .live('click', funtction...)
aminek következtében az eddig működő dolog nem működik, ha a külső divbe kattintok, azt akkor is úgy érzi, hogy a belsőbe kattintottam volna.Merre induljak?
-
trisztan94
őstag
válasz
Sk8erPeter #2184 üzenetére
Annyit, hogy ajax lapvaltasnal mukodjon a vissza gomb, url valtozas legyen, konyvjelzozhetni lehessen ill frissitesnel maradjon az aktualis oldalon.
A BBQ-t lattam mashol is, viszont stackoverflow-on tobben irtak, hogy az Adress plugin jobb
Majd megnezem pontosabban, danke!
-
Sk8erPeter
nagyúr
válasz
trisztan94 #2183 üzenetére
Tulajdonképpen egész konkrétan mit szeretnél megvalósítani?
Hasonló itt van:
http://benalman.com/code/projects/jquery-bbq/examples/fragment-basic/
http://benalman.com/code/projects/jquery-bbq/examples/fragment-advanced/
http://benalman.com/code/projects/jquery-bbq/examples/fragment-jquery-ui-tabs/
http://benalman.com/code/projects/jquery-bbq/examples/deparam/Ben Alman elég igényes cuccokat szokott írni, pl. a fenti plugin bekerült a Drupal 7 core-ba is az overlay-ek kezelésére, azért az már jelent valamit.
-
trisztan94
őstag
Sziasztok!
Jquery Address Pluginnal van valakinek tapasztalata? Jónak tűnik, de sehogy sem sikerül működésre bírni, elég szar a dokumentációja..Esetleg egy jó alternatíva?
-
Speeedfire
félisten
válasz
Sk8erPeter #2181 üzenetére
Igen, csak ahhoz elég sok helyen kellene most átírni a js kódok felépítését. Egyelőre abban maradtunk, hogy marad a confim és ha nagyon nagyon kell az ui akkor átírom.
-
Sk8erPeter
nagyúr
válasz
ahetaton #2179 üzenetére
Konkrétabb példa esetén könnyebb lenne válaszolni. (De ha arra vagy kíváncsi, hogy melyikkel könnyebb, akkor valószínűleg a JS lesz a válasz.)
=======
(#2178) Speeedfire :
hát jól van, igazából mondom, a callback-eket is lehet úgy kezelni, mint egy if-else-t (pl. ha sikeres volt az AJAX-kommunikáció / felhasználó igennel válaszolt, ez fut le, ha nem volt sikeres / felhasználó nemmel válaszolt, amaz fut le), de tény, hogy pár helyen átalakításra szorulhat a kód. -
ahetaton
csendes tag
Sziasztok!
Az lenne a kérdésem, hogy hogy lehet azt megoldani, mikor ráviszem az egeret egy menüpontra, akkor ne csak annak a hover állapota változzon, hanem az oldal x területein is legyen még változás?
CSS-ben ez megoldható, vagy csak JavaScript?
Előre is köszönöm!
-
Speeedfire
félisten
válasz
Sk8erPeter #2177 üzenetére
Hát, ezen is gondolkoztam már, de nagyon sok mindent át kellene írnom hozzá. Egyelőre hanyagolom, maximum ha nagyon nagy igény lesz rá akkor nekiesek. De addig marad a sima confirm. Az megállít mindent és a visszatérési értékkel tudok tovább dolgozni.
-
Sk8erPeter
nagyúr
válasz
Speeedfire #2176 üzenetére
Még annyi, hogy természetesen a callback függvényeket definiálhatod globálisan elérhető függvényekként is, és akkor a paraméterezésnél pedig csak magát a függvénypointert adod át:
http://jsfiddle.net/MjsVM/3/Hátha így egyszerűbb lesz.
A kódban nézd meg a saveMyShit és dropMyShit függvényeket. -
Speeedfire
félisten
válasz
Sk8erPeter #2175 üzenetére
Az a baj, hogy van kb 3 form és kb 5-6 action amit folyamatosan figyelek. Ha valamire rámegy az illető és a form adatai megváltoztak akkor feldobja ezt a dialog ablakot. A confirm most tökéletesen megy, csak egy ilyen ui mégis szebb megoldás.
De lehet áttervezem az egészet egy másik logikára, ha csak ott tudom meghívni. -
Sk8erPeter
nagyúr
válasz
Speeedfire #2174 üzenetére
És a callback függvényekbe pakolás miért nem jó? Kb. ugyanolyan, mintha lenne egy if-else-ed, csak mégsem, hanem csupán más-más függvény hívódik meg...
Az általában megszokott logika némi módosításra szorul, de nem túl nehéz átültetni másféleképpen.
De ha nem tiszta, hogyan, akkor konkretizáld. -
Speeedfire
félisten
válasz
Sk8erPeter #2173 üzenetére
De így nem jó! Pont az lenne a lényeg, ahogy az előbb mutattam. A return érték a button visszaadott értéke lenne.
-
Sk8erPeter
nagyúr
válasz
Speeedfire #2172 üzenetére
Hát nem csoda, mivel ez így rossz.
így már jó lesz:
http://jsfiddle.net/MjsVM/1/ -
Speeedfire
félisten
válasz
Sk8erPeter #2171 üzenetére
[link]
A lényeg az lenne, mint a confirm alatt, hogy amire klikkel azt dobja vissza. De nem... -
Sk8erPeter
nagyúr
válasz
Speeedfire #2170 üzenetére
rakd má' fel jsfiddle-re plíz
-
Speeedfire
félisten
válasz
Sk8erPeter #2169 üzenetére
Én ezt használom/nám, de mindig true-val tér vissza, még a kattintás előtt.
function ModalDialogSave(msg) {
var $dialog = $('<div />').html(msg).dialog({
modal: true,
autoOpen: false,
buttons: {
'Módosítások elvetése': function() {
$(this).dialog("close");
return true;
},
'Mentés': function() {
$(this).dialog("close");
//$('#'+form_id).submit();
return false;
}
}
});
return $dialog.dialog('open');
} -
Sk8erPeter
nagyúr
válasz
Speeedfire #2168 üzenetére
elég régóta lehet (amúgy gondolom 1.10.3-at akartál írni)
-
Speeedfire
félisten
Jquery ui 10.3 alatt lehet használni a dialog-ot confirm-ként?
Tehát amit amire ráklikkelek az legyen a visszaadott érték. -
martonx
veterán
válasz
Sk8erPeter #2164 üzenetére
Egytértek.
A "php"-t nagyon nem kellene a szerver lekérdezés - szerver válasz szinonímájaként használni, mert ez olyan szezont a fazonhoz dolog. -
spammer
veterán
válasz
Sk8erPeter #2164 üzenetére
Tudom, hogy nem csak php lehet, de én azzal ügyködök (annak a scriptje fut le), azért írtam azt
Tény, hogy nem vagyok otthon jquery/ajaxban.
-
Sk8erPeter
nagyúr
válasz
spammer #2163 üzenetére
Hát akkor totál félreérted az egész AJAX-kommunikációs folyamatot, amit jQuery-vel egyszerűbbé teszel. Teljesen mindegy, hogy épp melyik oldalt böngészed, kérést attól még a szerver felé akármilyen címre küldhetsz, aztán arra a szerver valamilyen módon válaszol.
Példával élve böngészheted az aloldal/kiskutya.aspx-et (most szándékosan nem PHP-s kiterjesztést írtam, hogy ne ragadjunk le ennyire ennél az egynél, erre mindjárt kitérek), de küldhetsz attól még AJAX-szal egy kérést a blabla/nagykutya.aspx címre."de ha más php-t hív le (filter.php)"
Ezek a megfogalmazások elvi hibásak. A kliens-szerver architektúrában a kliensed szempontjából totálisan irreleváns, hogy a szerver PHP-, Java- vagy ASP.NET-alapú (vagy más), a kliensed csak küld egy kérést valamelyik szerver felé, az adott szerver pedig azt kiszolgálja, mégpedig úgy, hogy küld egy bizonyos választ - hogy ezt a háttérben hogyan teszi (mondjuk ASP.NET van a háttérben, vagy PHP-kódokkal bűvészkednek), az teljesen mindegy.
Tehát nem "hív le" semmilyen "php-t" (ennek így értelme sincs túl sok), hanem kérést küld egy adott címre, amire a szerver majd valahogy válaszol, és ennyi. Attól még, mert az URL-ben az szerepel, hogy example.com/ez_egy_nagyon_erdekes_oldal.php, attól még nem is biztos, hogy fizikailag létezik az "ez_egy_nagyon_erdekes_oldal.php" fájl a szerveren, a gyökérben, sőt, lehet, hogy ASP.NET-szerver szolgálja ki az egészet, és egy sor PHP-kód sincs a tárhelyen, és akkor nagyon megvicceltek.
Mindezt csak azért írtam le, mert sokszor találkozni a fórumokban ilyen pontatlan megfogalmazásokkal ("más php-t hív le"), ami a kliens-szerver architektúra meg nem értésére utal (legalábbis hiányosságokra). -
spammer
veterán
válasz
Sk8erPeter #2162 üzenetére
"A string containing the URL to which the request is sent."
Igen, de ezért gondoltam, hogy ha megadom neki az url-t, akkor "loading script" (AjaxSetup) csak akkor fut le, ha ezt az url-t kéri le (search.php), de ha más php-t hív le (filter.php), akkor nem.
-
Sk8erPeter
nagyúr
válasz
spammer #2161 üzenetére
Nincs mit.
Hát igen, ha meg akarod határozni a működését valaminek, akkor általában a programozásnál kell írni valamit a kódba."de a doksiban nem is ajánlják ezt [link], ezért is gondoltam, hogy hátha van jobb megoldás."
A doksiolvasásnál arra gondoltam előbb, hogy itt pl. le van írva, mire való az url paraméter, szóval onnan könnyen megtudható lett volna>> http://api.jquery.com/jQuery.ajax/
url
Type: String
A string containing the URL to which the request is sent. -
spammer
veterán
válasz
Sk8erPeter #2160 üzenetére
Köszi, az if window.location.pathname megoldotta. Csak azért kérdeztem, mert nem értek a jquery-hez, gondoltam hátha van valami, amit a meglévő kódba kell (lehet) írni, de akkor most már tudom, hogy így kell
szerk: de a doksiban nem is ajánlják ezt [link], ezért is gondoltam, hogy hátha van jobb megoldás.
-
Sk8erPeter
nagyúr
válasz
spammer #2159 üzenetére
"url: 'search.php' -t hiába írtam be a beforeSend fölé. Nem nagyon beszélek jquery-ül "
Nem csoda, hogy hiába írtad be ezt, mivel ez csak azt adja meg, hogy hova történik a request elküldése. Nem ártana dokumentációt is olvasni, hátha előbb választ kapsz a kérdéseidre, mint a fórum használatával...window.location.href vagy window.location.pathname felhasználásával pl. egy iffel tudnád szűrni, hogy hol legyen alkalmazva ez a kód, vagy épp hol ne.
Nyomj egy F12-t, kattints a Console fülre, és próbáld ki, mit ad, ha ezt beírod, aztán nyomsz egy Entert. -
spammer
veterán
Ajax loading animhoz használom ezt a kódot:
$.ajaxSetup ({
beforeSend: function() {
$('#loading').show();
},
complete: function(){
$('#loading').hide();
}
});Működik, csak ez minden oldalon mutatja a kis anim divet, ahol ajax hívás van. Viszont ha én azt szeretném, hogy az egyik oldalon (ami a filter.php -t hívja meg) ne mutassa, akkor hogyan tudnám ezt a feltételt megadni neki? Vagy az is jó, ha azt adom meg neki, hogy csak akkor mutassa, ha kereséshez használom (search.php ajax hívása).
url: 'search.php' -t hiába írtam be a beforeSend fölé. Nem nagyon beszélek jquery-ül
-
spammer
veterán
válasz
Sk8erPeter #2157 üzenetére
Na igen, így már jobban fest
-
Sk8erPeter
nagyúr
válasz
spammer #2156 üzenetére
Nincs mit, amúgy azóta az általad belinkelt hsz.-t szerkesztettem, hogy kicsit egyértelműbb legyen, hogy az a return false-os onsubmit attribútumba elhelyezett megoldás CSAK akkor kell, ha használod a Form plugint, ami amúgy sem javasolt (kihangsúlyoztam azt a részt, hogy "If you insist on using jQuery Form Plugin", hozzátettem a "- which is NOT recommended -" megjegyzést, meg egy vonallal elválasztottam a korábbi kódrészlettől), szóval gondolom így már egyértelműbb az ott szereplő válasz, ami amúgy helyes volt.
-
spammer
veterán
válasz
Sk8erPeter #2154 üzenetére
Oké, köszi
-
Sk8erPeter
nagyúr
válasz
Sk8erPeter #2154 üzenetére
Mondjuk most látom, hogy ezt arra írta, ha a kérdező mégis ragaszkodik ahhoz, hogy használja a mára már totálisan feleslegessé vált jQuery Form Plugint, amit belinkelt a kérdező ("If you insist on using it").
-
Sk8erPeter
nagyúr
válasz
spammer #2153 üzenetére
Hát én ezt a topicban már sokszor fejtegettem, hogy sokkal többet ér a szerverről beszédes információkat visszaküldeni, pl. státuszkódokat arról, hogy minden oké volt-e, stb. Ez mondjuk hatványozottan igaz adatbázisba való feltöltésnél. Egyszerű tartalom-megjelenítésnél is számíthat, mert lehet, hogy 200 OK HTML-kódot kapsz vissza a szervertől, de valami gebasz mégis volt, és azt nem ártana, ha ki tudnád deríteni mondjuk egy beszédes hibakódból/üzenetből, hogy mi is történt. Így felhasználóbarát hibaüzeneteket is ki tudsz írni, mert tudod, hogy milyen esetet hogyan kezelj.
Ettől függetlenül működőképes természetesen, amit használsz, ezt csak a jövőre mondom, hogy szükséged lehet rá, érdemes ráállni arra, hogy JSON-ben küldöd vissza az adatokat a szervertől, státuszkóddal együtt, hogy helyén tudd kezelni."Ja meg ott a form method után volt egy onsubmit="return false", ez is kell bele, ha a jquery kód végén már ott van a return false; ?"
Nem.Feleslegesen teszi bele a válaszadó. Mivel úgy csak az onsubmittal inline kódot is belepasszíroz, miközben pont a submit eseményt kezeli le jQuery-vel, ergo felesleges oda is beírni, hogy return false;. Szóval a kérdés-felvetésed jó volt!
-
spammer
veterán
válasz
Sk8erPeter #2152 üzenetére
A felső (első) kóddal csináltam.
$("#FilterForm").submit(function() {
$.post($(this).attr("action"), $(this).serialize(), function(html) {
$("#default").empty();
$("#result").html(html);
});
return false;
});#result div-be tölti a listát, a #default div tartalmát pedig törli (ez látszik alapból, ha nincs filterezve). Ez akkor így még nem elég?
Ja meg ott a form method után volt egy onsubmit="return false", ez is kell bele, ha a jquery kód végén már ott van a return false; ?
Működik így, de szívesen veszem a tanácsot, ha esetleg javítani kell még
-
Sk8erPeter
nagyúr
válasz
spammer #2151 üzenetére
Nem hogy nem probléma, hogy külön fájlban történik a feldolgozás, hanem így jobb (jó).
A success callback-be mondjuk nem ártana egy ellenőrzés, mert attól még, mert a szerver 200 OK-t dobott vissza az AJAX-kommunikáció során, az még önmagában nem azt jelenti, hogy valóban helyesen megtörtént a - példa szerinti - kommentár elmentése. -
spammer
veterán
Van egy php oldalam, ami listáz fájlokat. Van egy select lista, amivel lehet "szűrni". jQuery + Ajax megoldással hogyan tudnám POST-olni a formot? Azért kellene, hogy F5-re ne rinyáljon a böngésző, hogy újra elküldi az adatokat blablabla... Egy oldalon belül van az egész kód, nincs külön process.php vagy akármi. Működik a form most is, csak gondoltam ha megoldható, akkor ajaxos betöltéssel jobb lenne, hogy ne frissítse az oldalt.
Gugliztam, de 1., nem értek hozzá, 2. komplett login form meg hasonló dolgokra találtam példát és általában külön volt a php meg html form. Variáltam mindenfélét, de nem tudtam összedobni.
Ilyesmiről van szó (tehát egy php oldalon van az egész):
<form action="" method="POST">
<select name="Filter" id="Filter">
<option value="blue">blue</option>
<option value="green">green</option>
<option value="red">red</option>
<option value="yellow">yellow</option>
</select>
<button type="submit">Submit</button>
</form><?php
if (isset($_POST['Filter'])) {
....
} else {
.....
}
?> -
Karma
félisten
Nem mondtad, hogy a felhasználó szövegdobozba írásáról van szó (ilyenkor tényleg csak egy change jön, fókuszvesztésnél, nem véletlen kell keyup eseményt használni), vagy selectről (amikor meg minden váltás change-et okoz).
Mint látod a zárójeles résznél, még nem győztél meg hogy tényleg időzítő kell...
-
Sk8erPeter
nagyúr
válasz
fordfairlane #2147 üzenetére
Egyetértek.
-
fordfairlane
veterán
válasz
Sk8erPeter #2146 üzenetére
A kérdés enyhén szólva pongyolán lett megfogalmazva.
Az egész totál zavaros, a print-echo-val, a setIntervallal, az alertekkel, mindennel együtt. Leginkább az nem derült ki, hogy pontosan mire is kell ez az egész, elveszik az implementációs részletekben.
-
Sk8erPeter
nagyúr
És honnan a t×kömből jön ez a "message" változó, amit ki kéne írnia?
PHP kód:
print "update";
Hát ez ebben a formában még nem PHP-kód...De ezzel kapcsolatban lásd Jim-Y hsz.-ét (#2144)... nem ártana egy <?php sem...
(#2143) Lacces :
"amin meglepődtem... a .php-nál nem a print-et kellett használni, hanem az echo utasítást! És akkor működött...
(Olyan, mintha a print-tel valami "szeny" is ájtött volna)."
Jaj ne beszélj már butaságokat...
Ezek a lényeges különbségek az echo és print között:
http://stackoverflow.com/questions/234241/how-are-echo-and-print-different-in-php
Egyébként abból a szempontból, amit írtál, kábé semmi... Szóval 10000000%, hogy valamit benézel.kódodból:
success: function (data) {
alert(data);
if(data =='update'){
}
......
}na az ilyeneket érdemes elkerülni. Már volt szó róla a topicban, hogy a szerveroldalról érdemes inkább beszédes információkat visszaadni JSON-ben, és akkor még van esély arra is, hogy értelmesen feldolgozható infókat kapsz.
Itt a hsz. végefelé elég részletesen leírtam az egyszerűsített példa keretében, hogyan is gondolom:http://prohardver.hu/tema/jquery_kerdesek/hsz_2058-2058.html
====
(#2145) Lacces
"Az Interval-on kívül mivel lehet még elérni, hogy ha megjelenik egy <html> tag (ajax után legenerálodik az oldalon) akkor induljon el a függvény?"
<html> tag miért jelenik meg, miért "generálódik le az oldalon"?A kérdés enyhén szólva pongyolán lett megfogalmazva.
-
Jim-Y
veterán
szerintem máshol van a probléma, nem ebben.
Kipróbáltam:$(document).ready(function(){
$.ajax({
type: "POST",
dataType: "html",
url: "test.php",
success: function(response){
alert(response);
if(response === 'update'){
alert('valami');
}
}
});
});<?php
echo "update";
?>Nekem mindkét alertet kihozta. Esetleg mutass több kódot
-
Lacces
őstag
Na másik... én már nem látom, nem veszem észre a problémát
$.ajax
....
success: function (data) {
alert(data);
if(data =='update'){
alert(message);
}
}
Az első alert eredménye az update! ki is írja. De a második sehogy sem fut le! És nem értem, miért nem megy bele az IF-be.
PHP kód:
print "update";Karma: köszi az előzőt
-
Lacces
őstag
Azért kell a tekerés, mert lehetőség-e van a felhasználónak többször is azt a mezőt modósítani. Ajax hívás eredményét kérdezi le. És ugye nem csak egyszer kereshet, hanem többször is, és emiatt lehet még egy másik... Max 3-4-szer keres a felhasználó.
A change esemény pedig ha jól tudom csak egyszer értékelődik ki. Meg ugye ahogy mondtam a HTML tartalom jön vissza Ajaxból. És van amikor nem, ezért a setInterval...
Persze lehetne mondani, hogy miért nem minden keresésnél... azért mert ezt a függvényt máshol is használja a webes alkalmazás... és így abba a keresőfüggvényben nem akarok "rondítani".
-
Karma
félisten
Egyszerű: az eredeti formában egyszer kiértékelődőtt a $(selector), és onnantól kezdve a belső függvény mindig ezt a konkrét értéket használta fel.
Mondjuk nem egészen világos, hogy a kódod mit csinál. Ha egy mező értékét másolod egy másikba, miért nem a change eseményt használod?
A setInterval esetén egyébként is célszerű eltenni a visszatérési értéket, hogy a clearInterval segítségével megállíthasd az időzítőt. Különben minden survey híváskor újabb timer kezd tekerni...
-
Lacces
őstag
Hali
Az alábbi kódnál mit nézhetek be? Ugyanis az van, hogy Interval-t alkalmazzok, mert az egyik input hidden mező változik. Van amikor nincs jelen, mint most első körben ezért undefinied-del jön elő. És kiválasztok egymásik szakmát, és hopp, már ott is van a html kódban az érték, de az interval-ás után, mégsem veszi elő az újnak az értékét, hanem a régiét nyomatja!!! Pedig a példát is néztem, és mégsem jó
function survey(selector) {
var input = $(selector);
var oldvalue = input.val();
setInterval(function(){
alert("Új: "+input.val()+ " --- Régi: "+oldvalue);
if (input.val()!=oldvalue){
oldvalue = input.val();
alert("OK");
}
}, 5000);
}
survey('input[name="szakma[]"]');Válaszokat előre köszönöm!
-
-=Flatline=-
tag
válasz
Sk8erPeter #2135 üzenetére
Persze, nyilvan escapelek, es nem a teljes latszott. Majd mindjárt provideolok egy cleanebb megoldást, csak reggeli
-
Sk8erPeter
nagyúr
válasz
-=Flatline=- #2134 üzenetére
Uhh, hát ez nagyon csúnya. Egyrészt randa spagettikód, másrészt a rendkívül elavult mysql_* függvényeket használod benne PHP-ben (hivatalosan is deprecated végre, helyette pl. MySQLi-t vagy PDO-t kell használni), harmadrészt az SQL Injectionre és más aljasságok lehetővé tételére mutattál be iskolapéldát.
(Mondjuk session_start()-ot sem látok, de feltételezem, nem a teljes kódot mutattad meg.)$q = $_GET['term'];
if($q=="") return;
honnan akarsz visszatérni? Ezt itt nem egy függvénybe raktad - vagy a kódodban mindez egy függvényben szerepel? Egyébként meg kapsz az arcodba szépen egy PHP notice-t, ha a $_GET['term'] egyáltalán nincs beállítva, szóval annak meglétét ellenőrizni kellene.
A query-t meg prepared statementtel kellene lefuttatni (pl. itt van rá példa: http://www.php.net/manual/en/pdostatement.bindparam.php, LIKE használatánál picit csúfabb, de akkor is jobb: [link], [link], [link], ), de legalábbis ha ragaszkodsz a gagyi, elavult megoldáshoz, akkor escape-elni kellene.if($row['location'] == ""){}else{ ... }
ez is meglehetősen érdekesen néz ki...Ha kódot másolsz be, akkor azután jelöld ki, és kattints a "Programkód" gombra, azért van!
-
-=Flatline=-
tag
válasz
-=Flatline=- #2133 üzenetére
Addig baszogattatok (jó értelemben), míg inkább megcsináltam. Nem teljes még és nem a legelegánsabb, de megy
Már csak az a kérdés, hogy tudom priorizálni azt, hogy mindig az aktuális session grp legyen a kiemelt ORDER BY és csak utána legyen a normál group szerinti rendezés? (Ergó az épp szerkesztendő anyag találatai kapjanak prioritást, utána jöhet a minden egyéb...) Plusz ugye itt még sehol sem a LINKDATA linkké formázott módon kerül vissza az adat, abban tuti kell majd a segítségetek, ha felébredtetek. Köszönöm
mysql_connect ($db_host, $db_user, $db_pass) or die ('Could not connect to the database.');
mysql_selectdb ($db_database) or die ('Could not select database.');
$_SESSION['grp']=1; //teszt erejeig
$q = $_GET['term'];
if($q=="") return;
$lolz = array();$query = "SELECT * FROM autocompletedb WHERE (`location` LIKE '{$q}%' OR `character` LIKE '{$q}%' OR `item` LIKE '{$q}%' OR `music` LIKE '{$q}%') && `group` = '{$_SESSION['grp']}' ORDER BY 'group' LIMIT 30";
$resultset = mysql_query($query);
$lolz = array();while( $row = mysql_fetch_assoc($resultset) ) {
if($row['location'] == ""){}else{
$lolz[] = $row['location'] . " - " . $row['groupname'];}if($row['character'] == ""){}else{
$lolz[] = $row['character'] . " - " . $row['groupname'];}if($row['item'] == ""){}else{
$lolz[] = $row['item'] . " - " . $row['groupname'];}if($row['music'] == ""){}else{
$lolz[] = $row['music'] . " - " . $row['groupname'];}}
echo json_encode($lolz);
?> -
-=Flatline=-
tag
válasz
Sk8erPeter #2132 üzenetére
Igazatok van, a két táblának ebben az esetben semmi értelme. Jó éjszakát közben, még jó, hogy egy órával korábban van itt
-
Sk8erPeter
nagyúr
válasz
-=Flatline=- #2128 üzenetére
"Az totál jogos kérdés, hogy miért jobb nekem, ha két közepes méretű adatbázis lesz betöltve, nem pedig egy nagy, de vezéreljenek mondjuk magasztos átláthatósági szempontok
"
Rossz megközelítés. Neked nem kell olvasgatnod az adatbázist, ne azt akard átlátni, legfeljebb a struktúráját alakítsd ki értelemszerűen. Jó esetben nem közvetlenül az adatbázisban fogsz kotorászni, hanem készítesz egy megfelelő UI-t arra, hogy szűrni lehessen az adatbázisban tárolt adatokra. Az tök más kérdés, hogy kezelhető legyen, az adatok megfelelően legyenek normalizálva, legyenek szétbontva logikusan a táblák, majd a lekérdezéskor legyenek jól összekapcsolva. A 78 ezer mező meg aztán végképp nem érv, hogy szétbontsd, az a mennyiség jól indexelt táblák és normálisan megírt lekérdezések esetén tényleg semmi egy mai átlagos adatbázismotornak, másodpercnek pici törtrésze alatt lehet ennyi adat közt keresni."78ezer rekordos már így is ami van és 15 mezőt tartalmaznak. Húzós dolgozni vele, ezt kell az upgradekor szétbontanom és, ha már itt tartunk, próbálnám egyszerűsíteni a júzer dolgát."
Hogy a júzernek mennyire van egyszerűsítve a dolga, ahhoz aztán abszolúte SEMMI köze annak, hogy az adattáblákba mennyi rekord van feltöltve, és a háttérben lévő adatbázis+táblák milyen struktúrájúak.Attól még lehet nagyon felhasználóbarát egy felület, hogy a háttérben lévő adatbázisszerkezet egy fostalicska, és fordítva is igaz lehet, ha rosszul csinálják.
A 15 mezőn mondjuk érdemes lehet elgondolkodni, kell-e, hogy mindegyik azonos táblában legyen, vagy érdemes inkább szétbontani, majd lekérdezéskor összekapcsolni (normalizálás).Egyébként ha ilyen bonyolultan fogalmazod meg a kérdést, akkor elmehet sokaknak a kedve, stackoverflow-n sem sokan tolongtak, pedig azért ott szoktak lenni válaszok, szerintem a "Complex autocomplete query" sem túl jó címválasztás, nem érzem igazán komplexnek a feladatodat (bár így fél 3-kor nem sokat fogtam fel belőle, mert annyira cifráztad, különösebben nem is gondolkoztam rajta), mégis elrettentő lehet a cím; valamint egy szemléltető ábra, a form megmutatása, valami tök egyértelmű rávezetés olykor többet mond minden szónál.
-
Jim-Y
veterán
válasz
-=Flatline=- #2128 üzenetére
Csak szerinted sok az a 78K, én melóban örülök ha ilyennel kell dolgoznom, mert azon értelmes időben lefutnak a query-k
Nekem a 70millió soros táblával volt bajom
Na, így már jobban értem a problémát. Nos, én először valamilyen formában eltárolnám még kliens oldalon, hogy melyik filmet szerkeszti, majd a leendő query-be ezt feltételnek írnám (nyílván ha úgy áll a kapcsoló). Tegyük fel BögyösMaca karakterére keresne a cikk közben, elkezdi gépelni, hogy 'Bögy' majd megáll
-3 karakter megvolt, vársz 2 másodpercet, hogy folytatja-e a gépelést, ha nem, akkor mehet az ajax, mégpedig úgy, hogy az ajax data mezőjében elküldöd a Bögy stringet, és, hogy épp mi az aktív film, pl:$.ajax({
..
data: {
phrase: "Bögy",
active: "Titanic",
amikellmég: "azmegyide"
}
..
});Ezt szerveroldalon feldolgozod, és csinálsz belőle egy hozzá passzoló query-t
SELECT * FROM Filmek WHERE title = 'Titanic' AND (szereplő LIKE ' %Bögy%' OR másikszereplo LIKE '%Bögy%' stb...);Visszakapsz x sort mondjuk, azt feldolgozod szerveroldalon encodolod json-be, és visszaküldöd a kliensnek.
Kliensoldalon egyrész listázod autocomplettel a találatokat valamilyen emészthető formában, hogy az író ki tudja választani, hogy melyik érdekli, melyiket akarja beszúrni, majd megnyomja a gombot.Ekkor te visszakeresed az ajax eredménytömbjében ugyanazt az elemet, csinálsz belőle egy linket és beszúrod a kívánt helyre.
Ne haragudj, hogy nem írok konkrét dolgokat, de még mindig nem látom, hogy hol akadtál el a dologban
-
-=Flatline=-
tag
A feladat célja a felhasználók számára egyszerűbbé tenni a hotlinkelést siteon belül, lévén rengeteg adatfeltöltés zajlik és ezzel szignifikánsan sikerülne megkönnyíteni az adatbevitelt.
Értelemszerűen ez egy próba adatbázis, hogy ne 80ezer rekorddal kelljen dolgozni itt.
Tehát:
Adott egy editor felületen egy csóka, aki ír egy cikket mondjuk. Ott figyel egy autocomplete mezo állandóan X helyen neki, hogy segítse a munkáját. És hogy? Ír egy cikket épp a Traveler sorozathoz, ami az adatbázisban van, ráadásul épp az az aktív filmje, lévén azt szerkeszti, TEHÁT, ha keres bármire, akkor a filmhez kapcsolódo adatok között keres. Kiválasztja bögyös maca karakterét, akiről egész pofás leírást csinált már egy másik júzer, semmi dolga nincs, hogy belinkelhesse azt az oldalt, csak kattintani az autocomplete resultra, és már be is került a szövegbe, amit ír és nem kell linkekkel sem szerencsétlenkednie. Az adatbázisban azért van rengetegszer kétszer ugyanaz, mer tegyük fel, bögyös maca karakter van 45 filmben, TEHÁT külöbséget kell tenni köztük. Ha emberünk úgy dönt, hogy ő most olyat szeretne a szövegbe linkelni, ami NEM az adott filmhez tartozik az adatbázis szerint, tehát mondjuk Bögyösneknembögyösdeszexi ANitát, akkor átkattintja az autocomplete mező melletti kis gombját arra, hogy GLOBÁL search, nem local filmen belüli és láss csodát, feljön neki sok találat, de akkor már nem árt tudnia, hogy melyik filmhez tartozóra fog klikkelni és ezért van a másik. (Az totál jogos kérdés, hogy miért jobb nekem, ha két közepes méretű adatbázis lesz betöltve, nem pedig egy nagy, de vezéreljenek mondjuk magasztos átláthatósági szempontok
)
Így érthető remélem, hidd el, egy táblába nem tehetem az egészet, mert 78ezer rekordos már így is ami van és 15 mezőt tartalmaznak. Húzós dolgozni vele, ezt kell az upgradekor szétbontanom és, ha már itt tartunk, próbálnám egyszerűsíteni a júzer dolgát.
A kérdésedre pedig: Alapvetően dizájner vagyok és ugyan sokmindent megtanultam, ezt nem bíznám nem szakemberre, ezért is mondtam, hogy ADOK PÉNZT! ha megcsinálja valaki. Köszönöm, hogy ránéztél, örülök a válasznak!
-
Jim-Y
veterán
válasz
-=Flatline=- #2124 üzenetére
Én már magát a feladatot nem értem, lehet én nem vagyok így este elég türelmes, de nem sikerült leszűrnöm, hogy tulajdonképpen hol is akadtál el az autocomplete-ban.
Egy adatbázisban kereső autocomplete példa úgy néz ki, hogy:
- van egy input text meződ, a felhasználó elkezd írni valamit, mondjuk 'cha', itt lekezeled, hogy hány karakter után, vagy milyen esemény hatására történjen keresés az adatbázisban, mondjuk 3 karater után keresel, tehát ha beírta a user, hogy cha akkor lesz egy ajaxod, ami az adatbázisban keres. Hogy egy táblában, vagy többen azt te döntöd el, és te írod meg.
- lesz ugye egy ajaxod, ami visszadja a query eredményét, az esetedben mondjuk egy tömböt négy értékkel CharacterA, CharacterA, CharacterB, CharacterB (meg kell jegyeznem, már az sem tiszta, hogy itt miért szerepel 2x minden?!megvan, de én ezt alapból szűrném már szerveroldalon)
- megvan a keresés eredménye, az inputmeződre rákötöd az autocomplete bővítményt, és megadod neki resource-nak a fenti tömböt.
- meg mondjuk van egy gombod, ami miután behelyettesítetted az input fieldbe, hogy mondjuk CharacterA, indít egy újabb ajax kérést, de már ezt a 'CharacterA'-t küldöd a szervernek.Látszik, hogy elég sok helyen dolgozhatsz az adattal, először amikor kiszeded az input mező értékét, majd mielőtt az első ajaxnál elküldöd, hogy 'cha' a szervernek, majd az erre érkező választ is szerkesztheted ahogy akarod stb...
Melyik lépésben akadtál el?
-
martonx
veterán
válasz
-=Flatline=- #2124 üzenetére
Ez igazán nem tűnik vészesnek. Viszont marhára nem érek rá megcsinálni neked
Ha nagyon nem menne, vagy nagyon nem találnál senkit, akkor esetleg keress meg, legrosszabb esetben tudok javasolni mást magam helyett. -
-=Flatline=-
tag
Sziasztok!
Van egy viszonylag komplex (guruknak tuti nem az) autocomplete kérdésem. Stackoverflow-n fentvan, feltételezem aki vágja a jqueryt, az tud annyira angolul, hogy megértse.
Az SQL két táblám dumpja ottvan a topicban.
Kérek szépen valakit, hogy nézzen rá, annyira nem bonyolult szerintem, de én nem tudom megcsinálni, mert nem vagyok ninja. Pénzt is szívesen adok, paypal, bármi.
Köszönöm,
Flat
link: ITT VAN
(azért egy gyors magyar leírás)
Először csak az autocompletedb táblát próbáljátok megérteni, szimpla cucc, vannak benne helyszínek, karakterek, stb, mind csoportokhoz kötve, amik filmek. Egy $_SESSION['grp'] érték adja meg, hogy épp mi az aktív filmcsoport. (A második tábla akkor kell, mikor NINCS session driven kiválasztott csoport majd..erről később)
Egy olyan autocomplete kérést szeretnék, ahol a session grp mezőket érinti csak a query nyilván, azaz, ha elkezdi beírni az arc, hogy 'cha' akkor feldob két karaktert, mert kettő tartozik az 1-es grp alá. Ha kiválasztja az egyiket, az adat, ami visszajön extendelve kell legyen, mert linket szeretnék visszakapni a search mezőmbe. (<a href="LINKDATA DB MEZO">CharacterA</a> --> ezt, ha CharacterA-ra bokott a user. Ez a konnyebb resz
A nehezebb az az, mikor nem tudjuk, hogy miben keres a user, tehat globalis az egesz adatbazisra nezve.
Megint elkezdi beirni, hogy 'cha', feljon 4 result, CharacterA, CharacterA, es CharacterB, CharacterB. Igen am, de a 'sample-iddata' azert van, hogy azt valahogy belejoinolva, a visszjaovo result ugy nezzen ki, hogy mellette van, hogy melyik film karaktereirol van szo, azaz ket Traveler es ket Star Wars result lesz.
Tehat, ezt szeretnem, hogy erre tudjon kattintani a user: CharacterA - Traveler
A visszakapott ertek ugyanaz, mint az elso peldaban, azaz linket szeretnek, szinten 'linkdata' cellabol, csak ezuttal nyilvan igy: <a href="LINKDATA DB MEZO">CharacterA - Traveler</a>
Koszonom
Sok fagyi?
-
Speeedfire
félisten
válasz
martonx #2121 üzenetére
Nem is mondtam, hogy kizárja.
Csak annyit írtam, hogy nem ismerem még annyira a knockout-ot. Elkezdtem vele ismerkedni, de csak lassan haladok vele, ahogy az időm engedni.
Amit tudok on()-ra rakom, de mindent így sem tudok vele "monitorozni".Más: Adott 1 vagy több form. Ha valaki módosítja és el akar menni máshova akkor dob egy figyelmeztetést.
Viszont ajax-ra ilyen bind unbind funkciót hogy lehetne írni?
Pl figyelni szeretném ha valaki a #valami a elemre kattint és ellenőrizze le akkor is a form-ot, hogy módosult-e vagy sem. Esetleg ha van kifejezettem erre a célra plugin, akkor mégjobb.var catcher = function() {
var changed = false;
$('form').each(function() {
if ($(this).data('initialForm') != $(this).serialize()) {
changed = true;
$(this).addClass('changed');
} else {
$(this).removeClass('changed');
}
});
if (changed) {
return 'One or more forms have changed!';
}
};
$(function() {
$('form').each(function() {
$(this).data('initialForm', $(this).serialize());
}).submit(function(e) {
var formEl = this;
var changed = false;
$('form').each(function() {
if (this != formEl && $(this).data('initialForm') != $(this).serialize()) {
changed = true;
$(this).addClass('changed');
} else {
$(this).removeClass('changed');
}
});
if (changed && !confirm('Another form has been changed. Continue with submission?')) {
e.preventDefault();
} else {
$(window).unbind('beforeunload', catcher);
}
});
$(window).bind('beforeunload', catcher);
}); -
szmegma
aktív tag
trisztan94 es Sk8erPeter
Semmi, mar mukodik en neztem be az egyik reszt. -
martonx
veterán
válasz
Speeedfire #2120 üzenetére
A kettő marhára nem zárja ki egymást, sőt.
Full ajax oldalnál a legbiztosabb, ha minden .on-t a document-re kötsz.
Másik megközelítés, hogy minden ajax hívás success-ében hozod létre az oda való esemény kezelőket. De ez szvsz egy idő után átláthatatlanná teszi az oldalt.
A full ajax oldalt egyébként single page appilcation-nek hívják. Ha így keresel rá gugliban akkor sok hasznos infót, design patternt lehet hozzájuk találni. -
Coyot
őstag
válasz
Speeedfire #2118 üzenetére
Knockout.js? Az egy marha jó kis cucc, kezdem megszeretni nagyon
-
Speeedfire
félisten
Full ajax oldalt, hogy lehet rendesen "jqueryzni"?
Mindig a body-t figyeljem az on()-nal? Vagy hogy kell ezt rendesen megvalósítani?
Pl ajax-al betöltök valamit, valahova majd amit betöltöttem ott is akarok csinálni extra dolgokat jquery-vel, meg más jquery extrension-nel. -
szmegma
aktív tag
Bocsi, ha hazajottem melobol osszedobok egy tesztet.
-
szmegma
aktív tag
Lenne itt egy ujabb kerdesem, ami most merult fel, miota az uj json return datat hasznalom.
$("body").on("change","input[name=opcio]",function() {
alert($(this).val());
});Ennek a kodnak az elso sora ugy kellene kineznie az altalatok tanitottak szerint, hogy
$("#inputs").on("change","input[name=opcio]",function() {
...Ez rendben mukodik is az oldalra lepes utan, am miutan a gombra kattintok, ami meghivja a $("button").on("click","button",function(){ reszt, a $("#inputs").on("change","input[name=opcio]",function() { kod mar nem mukodik, viszont ha lecserelem az #inputs selectort body-ra, akkor a gombra kattintas utan tortent oldalbetoltes utan is mukodik a .change() fuggveny.
Kerdesem, hogy miert? Arra tapogatozom, hogy ezzel a json-os cuccal ugyebar nem toltodik ujra az egesz oldal, igy a <script></script> kozotti resz sem es ez kavarhatja meg, de mint tanitottatok az .on() fuggveny pont erre van kitalalva nem?
Koszonom.
-
szmegma
aktív tag
válasz
trisztan94 #2109 üzenetére
Ertem, koszi szepen a leirast.
Az egybe pakolasnak majd neki latok a heten. -
trisztan94
őstag
válasz
Sk8erPeter #2110 üzenetére
Köszi a pontosítást!
Próbáltam úgy leírni, hogy paraszt Pista bácsi is megértse, ha egy weblapot akar írni.
Azt nem is tudtam, hogy az event.* dolgokkal ekvivalens a return false, szóval ismét tanultam valamit -
Sk8erPeter
nagyúr
válasz
Speeedfire #2107 üzenetére
Esetleg megpróbálhatod az .ajaxSuccess()-szel globálisan lekezelni az eseményt, úgy, hogy itt inicializálod a tooltipet, esetleg némi késleltetéssel, ha szükséges.
-
Sk8erPeter
nagyúr
válasz
trisztan94 #2109 üzenetére
Itt volt erről szó, ott linkeltem egy témában releváns topicot:
http://prohardver.hu/tema/javascript_topic/hsz_3365-3369.htmlNémi pontosítás az általad írtakhoz:
"A return false annyit csinál, hogy az alapértelmezett eseményt nem engedi lefutni."
Pontosítva: jQuery-ben az eseménykezelőkbe tett return false; ekvivalens az event.preventDefault() ÉS event.stopPropagation() hívásokkal. Tehát a böngésző alapértelmezett műveletének végrehajtását akadályozzuk meg ezzel, ÉS megakadályozzuk az esemény buborékként való felúszását a DOM-fában, megakadályozva egyúttal azt, hogy a szülők eseménykezelői értesítve legyenek az eseményről.
Stimmel, amit írtál, csak ezzel a kiegészítéssel lesz teljesen igaz."Ha ki van töltve minden akkor return true (bár mondjuk ez az alapértelmezett, de én szeretem kiírni)"
Ez mondjuk így ebben a formában nem teljesen helytálló, mert nincs "alapértelmezett return true", hanem mivel nem tértünk vissza false-szal az eseménykezelőből (vagy hívtunk event.preventDefault()-ot és event.stopPropagation()-t), ezért engedjük, hogy a böngésző alapértelmezett művelete lefusson (ami - ebben már teljesen igazad volt - a form elküldése).Alapvetően jókat írtál, csak pici korrekcióra szorult, hogy teljes legyen a kép, hátha hasznos valakinek.
-
trisztan94
őstag
válasz
szmegma #2108 üzenetére
A return false annyit csinál, hogy az alapértelmezett eseményt nem engedi lefutni.
Tehát egy linknél az alapértelmezett esemény az, hogy átirányít a href attribútumban található útvonalra.
Tehát ha te egy linkre eseménykezelést használsz, tegyük fel egy ajax kérés miatt, akkor ugye nem akarjuk, hogy betöltse azt a lapot amit js nélkül betöltene, hanem kiszedjük belőle az infót és majd ajax-szal elintézzük.. Ilyenkor használjuk a return:false-ot.A return true meg pont ennek ellentéte
Mondjuk valami tulajdonság szerint engedjük a lefutást, pl egy formnál. Ha ki van töltve minden akkor return true (bár mondjuk ez az alapértelmezett, de én szeretem kiírni), különben return false (mert ott a submit gomb alapértelmezett eseménye a form elküldése)Szerk:
Nem láttam a php fájlokat, de egybe lehet rakni, csak az útvonalakat módosítsd, esetleg rakd külön class-be (vagy function-be) és ajax-szal azt a function-t vagy class-t hívod meg. -
szmegma
aktív tag
válasz
Sk8erPeter #2104 üzenetére
Tenyleg! Koszi.
Honapokkal ezelott futottam mar ossze ezzel a return false izevel csak lusta voltam akkor megkerdezni, hogy honnan tudom mikor es hol kell hasznalni?
+ egy bonus kerdes: Amit most ossze hoztunk kodot a test oldalon, az ugyebar ket fajlban van (test3.php es func.php). Kerdesem, hogy megoldhato, hogy egy fajlban legyen az egesz?
-
Speeedfire
félisten
válasz
martonx #2105 üzenetére
Az a baj, hogy az oldal elég komplex. Rengeteg ajax kérés fut, a felét a yii intézi el nekem. Pont emiatt akartam inkább a change-re tenni és nem a success részbe. Lényegében szinte minden össze van kötve mindennel. Elég interaktív felület.
Máshogy akkor nem lehet megoldani, csak a success-nél? -
Jim-Y
veterán
válasz
Speeedfire #2103 üzenetére
mint ahogy martonx is írta, a korábbi kódomban pont ez szerepel [link]. A page classú tagek ajaxxal lettek hozzáadva, és azokra még egy .on lett aggatva, de ennek az ajaxon belül kell lennie. Csak ebben a kódban ki lett delegálva a törzs egy függvénybe
Amikor írtam a kódot én is kipróbáltam függvényen kívül, de úgy nem történt semmi.
-
martonx
veterán
válasz
Speeedfire #2103 üzenetére
Az ajax success metódusába tedd bele a tooltip beállítást.
-
Jim-Y
veterán
válasz
Speeedfire #2101 üzenetére
És mi nem megy tulajdonképpen?!
Új hozzászólás Aktív témák
- Androidos fejegységek
- Formula-1
- Xbox Series X|S
- Folyószámla, bankszámla, bankváltás, külföldi kártyahasználat
- Képregény topik
- Házi barkács, gányolás, tákolás, megdöbbentő gépek!
- BestBuy topik
- Battlefield 6
- Fortnite - Battle Royale & Save the World (PC, XO, PS4, Switch, Mobil)
- Windows 11
- További aktív témák...
- Gamer PC-Számítógép! Csere-Beszámítás! Mini PC! I5 10600KF / RTX 3060 12GB/ 16GB DDR4 / 1TB SSD
- Bowers/Wilkins PX8 fejhallgatók (dupla Bluetooth eszköz csatlakoztatása!)
- Telefon felvásárlás!! iPhone 11/iPhone 11 Pro/iPhone 11 Pro Max
- Gamer PC-Számítógép! Csere-Beszámítás! I5 12400F / RTX 3070 8GB / 32GB DDR4 / 1TB SSD
- Lenovo ThinkPad T14 G1 Ryzen 5 PRO 4650U 16GB 256GB 1 év garancia
Állásajánlatok
Cég: CAMERA-PRO Hungary Kft.
Város: Budapest