- gban: Ingyen kellene, de tegnapra
- sziku69: Fűzzük össze a szavakat :)
- Luck Dragon: Asszociációs játék. :)
- Geri Bátyó: Agglegénykonyha 1 – rizseshús másképp
- eBay-es kütyük kis pénzért
- D1Rect: Nagy "hülyétkapokazapróktól" topik
- sziku69: Szólánc.
- LordAthis: AI Kérdés érkezett - 3600 soros Spagetti kód refaktorálása és budget
- BMWFan: Akasztófa
- Gergosz2: Emlékezzünk!
Új hozzászólás Aktív témák
-
Speeedfire
félisten
válasz
Sk8erPeter #3099 üzenetére
Azért nem teljesen így van, mert a fenti kódrészbe a var url-hez ezt beilleszted, akkor van amikor feldobja a következő oldal címét. Viszont nem jöttem rá, hogy mi alapján. Illetve a preventDefault() sem akar rendesen blokkolni.
e.target.activeElement.href
$(window).bind('beforeunload', function(e) {
var url = e.target.activeElement.href;
e.preventDefault();
alert(url);
});Egyelőre az oldalon lévő gombokat figyelem, hogy melyikre kattint és az url-jét vizsgálom meg.
-
Sk8erPeter
nagyúr
válasz
Speeedfire #3098 üzenetére
Annak az oldalnak a címét, ahova a felhasználó épp navigálni készül, tudtommal nem tudod kideríteni kliensoldali kóddal ilyen módon, ha belegondolsz, komoly biztonsági kockázat lenne, túl sok személyes információ is kikerülhetne (például ha a saját oldaladról elnavigál a YouP×rnra, azt nem biztos, hogy a felhasználó akarja, hogy tudd
).
Tehát az egyetlen működő megközelítés, ha saját oldalon belüli linkekről/kiválasztható elemekről/... van szó, hogy az azokra való kattintás/kiválasztás/... eseményt figyeled. Ha mondjuk a felhasználó egy böngészőbe elmentett könyvjelzőre kattintva navigál oda, vagy konkrétan bepötyögi a címsorba a célURL-t (ami nem kizárt), akkor persze nem fogod megtudni, hogy saját oldalon belülre navigált, úgy, hogy akár előtte is saját oldal valamelyik menüpontjában volt (ilyenkor elvileg a referer sem tartalmazza, hiszen nem oldalon belüli hivatkozásra kattintva jutott el a másik oldalra). -
martonx
veterán
válasz
Speeedfire #3096 üzenetére
Inkább a HTML5-ös History API-val kellene próbálkoznod. [link]
-
Speeedfire
félisten
Sziasztok,
az oldal elhagyását szeretném figyelni. Ha egy bizonyos oldalra menne át, akkor le kellene futtatnom előtte egy funkciót. Viszont az event-ből nem látom, hogy hova fog elmenni.$(window).bind('beforeunload', function(e) {
var url = e.nem.tudom.ide.mi.kellene,
if(url.search('site/index') === -1) {
e.preventDefault();
Funkcio();
}
});Vagy lehet, hogy nem is az event-ből kellene ezt kinyernem?
-
Realradical
őstag
válasz
tothjozsi96 #3094 üzenetére
Szia!
Arra, hogy normálisan nézzen ki a popup itt egy megoldás: Fancybox
$(document).ready(function() {
setInterval( showImage, 60000);
});function showImage() {
var id='valami id ami alapján randomizálod az image-eket';
$('#myImage.'+id).trigger('click');
}A +10 pontos logika attól függően kreálandó le, hogy hol szeretnéd tárolni, vagy, hogy elérhető kell-e maradjon az aktuális állás a user session megszűnte után. Ha DB-ben akarod tárolni, akkor kell rá egy webservice ami meg tudsz hívni a sikeres klikkelésre.
Ennek a megvalósítása függ attól, hogy milyen DB-t használsz, milyen webservert, milyen nyelvet használsz, Java/.NET, stb.szerk:
Lehet mondjuk bonyolítani feladattól függően. Pl. nem akarod, hogy kliens oldalon látszódjon az image egy rejtett div-ben, akkor valahol tárolni kell őket és időnként előszedni pl. egy webservice-en keresztül. Ha nem akarod, hogy a user is tudja hívogatni a ws-t akkor oda kell valamilyen authentikáló folyamat, hogy tudd ki piszkálja a ws-ed. Le lehet kezelni, hogy adott user ugyanazt az image-et ne kapja kétszer. Az image klikkelés sem teljesen tiszta nekem, hogy mit szeretnél. Ráklikkelek egy image és jön a pont, vagy ad valami feladatot/kérdést ahol jó választ kell választani. Ebben az esetben nem elég egy image-et előhozni. -
Sziasztok!
Remélem jó helyre írok.
Nekem egy olyan dolog kellene ami szerintem a jquery-vel megoldható.
Az a lényeg hogy random mondjuk 10-20 percenként egyszer csak megjelenik egy kép és arra rá lehet kattintani és kapsz mondjuk az oldalon +10 pontot.Erre létezik valami egyszerű megoldás vagy valami alap verzió?
Nem tudom hogy kezdjek neki.
Köszönöm az ötleteket előre is!
Üdv! -
TomyLeeBoy
tag
válasz
Sk8erPeter #3092 üzenetére
Levettem a overflow:hidden; paramétert a div-ről. Először jó ötletnek tűnt de igazából nincs is rá szükség.
-
Sk8erPeter
nagyúr
válasz
TomyLeeBoy #3091 üzenetére
Hogyan oldottad meg?
Amúgy korábban használtam a Chosent, és volt egy ilyen jellegű para (egy overlay-en használt, Chosennel átalakított listánál nem látszott rendesen a felugró lista), csak már olyan rég volt, hogy nem emlékszem, mi volt a megoldás. -
martonx
veterán
válasz
TomyLeeBoy #3089 üzenetére
Gondolnám, hogy CSS-el tudod megoldani.
-
TomyLeeBoy
tag
Sziasztok!
Chosen nevű select box-al hogyan lehetne megoldani, hogy ha kilóg a div-ből, akkor is ő legyen mindig felül? A listám alját kitakarja az alatta lévő div teteje. Sima select box-al nincs ilyen gond, az "rálóg" az alatta lévő div tetejére.
-
martonx
veterán
válasz
Realradical #3085 üzenetére
Cég nem tilt semmi netes forgalmat. Ráadásul albérletből és otthonról is 403 fogad.
-
Zedz
addikt
-
válasz
Sk8erPeter #3081 üzenetére
Köszi, belenézek mindenképp, de a window.location.pathname már nagy segítség volt.
-
Sk8erPeter
nagyúr
válasz
Des1gnR #3080 üzenetére
"Wordpress-be megy, így ez kiesett."
Ez hülyeség, WordPress esetén is lehet feltételtől függővé tenni egy script hozzáadását, 5 másodperc guglizással rengeteg találatot kaptam, pölö:
http://wordpress.stackexchange.com/questions/67802/most-efficient-way-to-add-javascript-file-to-specific-post-and-or-pages
(BTW fogalmam sincs, hogy ez-e a jó módszer, ami itt az elfogadott válasz, nem ismerem a WordPress számomra - Drupallal szemben a WordPress csupán nagyon felületes ismerete alapján - kicsit sivár lelkivilágát.)(#3079) martonx:
Csak kiegészítés/pontosítás akart lenni, hogy ne magára a window.location objektum egyezőségére akarjon keresni.Mert akkor a window.location.toString()-metódus által visszaadott értékre fog egyezőséget vizsgálni, az meg a window.location.href értékével ekvivalens, abban meg benne van a teljes URL (konkrét protokollal, hostname-mel, stb.), és azt melósabb egyeztetni, mint a sima window.location.pathname-et. Igazából ezt nem neked magyarázom, mert Te ezt pontosan vágod, csak hátha hasznos a kérdezőnek is.
-
martonx
veterán
válasz
Sk8erPeter #3078 üzenetére
jogos, csak bedobtam valamit
-
Sziasztok!
Azt, hogy adhatom meg, hogy a kódom, csak egy megadott URL esetén fusson le?
-
Zedz
addikt
válasz
Sk8erPeter #3072 üzenetére
A jQuery document.ready-vel védi a global scope-ot nem?
-
Sk8erPeter
nagyúr
A felesleges overhead elkerülése miatt MINDEN programozási nyelvre igaz, hogy érdemes az egyes függvény-/metódushívások visszatérési értékeit eltárolni egy változóba, ha az adott kódrészlet(ek) végrehajtása során azokra többször van szükség - persze a változásokat (ha a függvény/metódus időközben más eredményt adna vissza) frissíteni kell. Arra azért figyelni kell, hogy ne menjen át gányolásba, tehát pl. ne érje el mindenki a változót, akinek nincs is rá szüksége, ne szemeteld vele a globális scope-ot, ha ez elkerülhető (van, amikor nem elkerülhető, de azért legtöbbször valami "burkolás" megoldható), stb.
-
Zedz
addikt
Kérdés: szerintetek érdemes kigyűjtögetni a gyakran használt elemeket? Mint pl.: var color = $('.color');
-
Sk8erPeter
nagyúr
-
Zedz
addikt
Sziasztok,
Egy olyat szeretnék csinálni, hogy X számú input mezőhöz egy gomb segítségével hozzá tudjak adni még egy input mezőt, ami detto ugyanaz mint az eddigiek. A HTML egyezőségen kívül azt is el akarom érni, hogy az eredetiekre megírt eventek az újonnan hozzáadottakon is ugyanúgy működjenek, mint a példakódban mondjuk a click esemény. A problémám az lenne, hogy ez nem sikerül.
A hiba gondolom abból fakad, hogy a document.ready már a felépült DOM fát veszi alapul, tehát az "eredeti" inputokat szívesen felismeri, de a DOM módosítása után bekerült HTML elemek már nem érdeklik, mert azok már document.ready után jöttek létre.
Egy ideje próbálok már rájönni a megoldásra, több megoldással is próbálkoztam, de sikertelenül.
A példa kódban azért van .clone(), mert az eredeti kódban nem csak egy inputot akarok lemásolni, hanem egy komplexebb csoportot, aminek a része az input mező.
-
bigbuda
aktív tag
Sziasztok!
Kérdésem az lenne:
PHP-ba kellene egy combobox, aminek elemei egy adatbázisból lennének lehívva. De a combobox-ba kézzel is be lehetne írni és ha a beírt elem még nincs az elemek között, akkor úgy is el lehet menteni és a beírt elem eltárolódik az adatbázisban, tehát a következő használatkor már ott lesz alapjáraton a választhatók között..
Ezt hogyan lehetne megcsinálni? -
Karma
félisten
válasz
Sk8erPeter #3057 üzenetére
Azért van ott a figyelmeztetés szerintem, mert a régi IE verziók nem támogatták a textContentet ezeknél az elemeknél. IE10/11 alatt már szerencsére közeledtek annyit a W3C ajánlásához, hogy onnan is kiolvasható legyen az érték, mint a többi böngészőben. A text() metódus meg arra épít.
-
Sk8erPeter
nagyúr
válasz
Speeedfire #3058 üzenetére
Nincs mit!
-
Speeedfire
félisten
válasz
Sk8erPeter #3057 üzenetére
Na b+, ma is tanultam valami értelmeset jQuery-ből. Köszi az infókat, megpróbálok ezentúl jobban odafigyelni rá.
-
Sk8erPeter
nagyúr
válasz
Speeedfire #3056 üzenetére
"Nem úgy van, hogy a simpla tag-ekhez (pl: input), attributumokhoz van a text és a dupla elemekhez(p,div stb) pedig a html?"
Attribútumokhoz? Azokhoz biztos nem, arra az .attr() való.Amúgy meg nincs ilyen jellegű szabály, amire utalsz, a .text() egyszerűen szöveges tartalmat szúr be, a .html() pedig HTML-t - értelemszerűen. Próbáld ki például ezt: $('p').text('<strong>blablabla</strong>'); Magát a teljes szöveget fogod látni a bekezdés(ek)ben, nem kerül átalakításra a "blablabla" szöveg kiemelt szöveggé (értsd: látni fogod a <strong> taget).
Visszatérve a textarea vs. .text()-re: ez vicces, mielőtt írtam volna, direkt kipróbáltam, és működik textarea-hoz a .text() metódus, ennek ellenére a doksi ezt írja:
"The .text() method cannot be used on form inputs or scripts. To set or get the text value of input or textarea elements, use the .val() method. To get the value of a script element, use the .html() method."
Szóval elvileg a .val() segítségével történő beállítás a helyes textarea-hoz is. Mondjuk lehet, hogy úgy érti, hogy a .text() nem használható pl. textarea-hoz, hogy bizonyos böngészőkben nem működik...Ezt azért odaírhatták volna.
Mindenesetre a .text() textareánál működik FF 32.0.3-ban, IE11-ben, Chrome 38.0.2125.101 m alatt, szóval az aktuális böngészők mindegyikében...Na mindegy, a lényeg, hogy végül is az eredeti állítás stimmel, hogy a .html() metódust nem érdemes használni textarea-ra, arra inkább a .val() való (bár a .text() is jó a gyakorlatban
).
-
Speeedfire
félisten
válasz
Sk8erPeter #3055 üzenetére
Lehet nem túl friss az ismeretem akkor ezzel kapcsolatban. Nem úgy van, hogy a simpla tag-ekhez (pl: input), attributumokhoz van a text és a dupla elemekhez(p,div stb) pedig a html?
-
Sk8erPeter
nagyúr
válasz
Speeedfire #3054 üzenetére
Bár a központi téma szempontjából nem releváns, jelen esetben a .text() metódushívás jobb lehet, mint a .html(), mert utóbbinál egy esetedben tök felesleges (textarea-ba raksz be sima szöveges tartalmat) reguláris kifejezéssel történő cserét is lefuttat(na, ha lenne illeszkedés, de az illeszkedést ugye vizsgálni kell): http://james.padolsey.com/jquery/#v=2.0.3&fn=jQuery.fn.html
ezzel szemben:
http://james.padolsey.com/jquery/#v=2.0.3&fn=jQuery.fn.text
http://james.padolsey.com/jquery/#v=2.0.3&fn=jQuery.textNéha érdemes lehet ilyen különbségeket is figyelembe venni (még ha eleve jQuery használatánál nem is divat sajnos az erőforrásbeli különbségekre figyelni).
-
Speeedfire
félisten
válasz
Speeedfire #3053 üzenetére
Konkrét megoldást nem találtam rá, viszont a callback funkció talán jobb rá, mint paraméterben átadni a selector-t. [link]
-
Speeedfire
félisten
Egy fájl tartalmát szeretném kiolvasni base64 kódolással, majd a kapott értéket beilleszteni egy másik mezőbe.
Olyan megoldást már találtam, hogy fix elembe illesztette be, de hogy visszaadott érték alapján illessze be egy megfelelő mezőbe olyat nem.
Most egy fapad megoldást csináltam erre, input paraméterben adom át, hogy mi a cél mező.
Ez lenne ami megy, de ilyet szeretnék.
Valaki foglalkozott már ilyennel? -
martonx
veterán
No, kész vagyok a scrollozós navigációval.
Végül magam írtam egyet, mivel túlságosan custom kellett, hogy legyen, illetve jquery-vel annyira bagatell volt (na jó, másfél estém ráment azért, azaz kb. 6 óra), plusz egyúttal integráltam a meglévő pagejs-es navigációba is.Így a navigációm az alábbiakat tudja:
1. oldal bizonyos pontjaihoz scrolloz, amit mondjuk bármelyik plugin tud
2. ahogy lefelé scrollozol, a hiányzó anyagot röptében tölti, ezt is tudják a pluginek
3. amikor menü kattintással scrollozol oda, akkor is tölti az oda tartozó content-et, sőt nem csak az oda tartozót, hanem a közben felmerülő addig hiányzó contenteket is, itt a pluginek már kezdtek elvérezni
4. és vannak a scrollozós navigáción kívül eső "oldalak", ezekről visszakattintva a baromi nagy scrollozós oldalra is tudja a fenti 3-at, annyi különbséggel, hogy ilyenkor betölti az alap oldalt, és indul a scroll és tölti a cuccokat közben, ezt pláne nem tudják a pluginekEgy dolgot nem tud, de most nem akartam ennél több időt rászánni. Hiányzik belőle, hogy manuális scrollozáskor jelölje aktívnak az ahhoz a ponthoz tartozó menüpontot. Ezt valószínűleg a document.elementFromPoint(x,y)-al lehetne figyeltetni.
Sajnos az oldal még nem publikus, ha az lesz belinkelem ide.
-
Sk8erPeter
nagyúr
válasz
martonx #3047 üzenetére
Ez ilyen majdnem "Infinite Scroll", ha jól értem, azzal a különbséggel, hogy itt nem ugyanannak a tartalomtípusnak a végtelen betöltése történne, hanem az oldal különböző szakaszait töltenéd be scrollozástól függő módon - szerintem erre a jQuery Waypoints talán jó lehet, két use case:
http://imakewebthings.com/jquery-waypoints/shortcuts/infinite-scroll/
http://imakewebthings.com/jquery-waypoints/examples/scroll-analytics/
Bevallom, még a gyakorlatban nem használtam kipróbáláson kívül, de sok helyen láttam már linkelve, meg ez elég normálisnak tűnik API és doksi szempontjából is.
(A kód fent van GitHubon.) -
martonx
veterán
Sziasztok!
Nagyon nem mozgok otthonosan jquery pluginek között. Kérlek javasoljatok valami jó plugint, ami azt csinálná, hogy van egy baromi hosszú scrollozható nyitó oldalam. Ennek van X szekciója.
Nem szeretném az egészet betölteni (és itt nem csak a képekre gondolok, hanem a komplett szekciókra, mert van köztük olyan, ami google mapstől kezdve, kismillió képen keresztül minden szir-szart tartalmaz), hanem mindig csak akkor töltődne be 1-1 szekció, ha a scroll elérne egy bizonyos pontot, vagy az oldal alját.
Van erre valami jó jquery plugin?
Ha bármi jó ötletetek van, hogyan lehetne ezt minél szebben, erőforrás kímélőbben kivtelezni, akkor ötleteljünk rajta.Köszi!
-
martonx
veterán
válasz
Realradical #3044 üzenetére
Cross-browser kerülő megoldások vannak, mint pl. nem background-color-t használsz hanem inline shadow-t / beteszel egy egyszínű háttérképet stb...
-
Cathfaern
nagyúr
válasz
Realradical #3044 üzenetére
Gyakorlatilag csak Chrome alatt megoldható a dolog, és ott is bugos: [link]
-
martonx
veterán
válasz
Realradical #3042 üzenetére
Lehetséges, de elég szopás. A window.print()-nek elvileg vinnie kellene a színeket is, ha jól emlékszek ez böngésző függő, és a Chrome nagyon nem viszi a színeket. FF és IE teljesen jók e téren.
-
Realradical
őstag
Sziasztok!
Lehetséges a jquery-vel átszínezett oldalt formázással együtt kinyomtatni valahogyan? Van egy Sharepoint listám ami agyon van színezve, de a szerver oldalon az innerhtml-nek fogalma nincs arról, hogy van színezés. Ezért a beépített sps-es nyomtatási funkciók nem működnek.
Próbáltam így is:
$(document).ready(function() {$(‘.printMe’).click(function() {
window.print();
return false;
});});</script>
De a hatás ugyanaz, nincsenek színek. Valaki már oldott meg ilyen problémát?
-
DNReNTi
őstag
válasz
tothjozsi96 #3040 üzenetére
Persze, hogy működik anélkül. Pl:
$( ".class" ).show(); -
A show csak click-el működik vagy anélkül is?
-
Zedz
addikt
válasz
Sk8erPeter #3038 üzenetére
Köszönöm a tippet, megnézem ezzel is!
-
Zedz
addikt
Sziasztok,
Lenne ez a kódom. A kérdésem az lenne, hogy miért csak az első elem focuout eventjére hívja meg a kívánt függvényt? Mindkettő elemet eléri a szkript, nem tudok rájönni mi lehet a gondja. Az elemeket egy változóból érem el.
-
Speeedfire
félisten
válasz
Speeedfire #3033 üzenetére
Bamm, lehet hogy teljesen rossz volt a jquery és az apache vonal is. Ahogy nézem, akik hasonló cipőben jártak ott a php session_write_close() volt a megoldás. Viszont akkor nem értem, hogy működik másnál aki szintén php-t használ session-ökkel.
-
Jim-Y
veterán
válasz
Speeedfire #3031 üzenetére
Tadaam, példa: [link]
-
Speeedfire
félisten
Nem ismerem ezt a mockjax-ot.
Így szoktam az ajaxot használni. [link]
Sk8erPeter:
Hol van, hogy pending? Hol nézed? Webfejlesztő panelban, vagy csak a UI-on?
A webfejlesztő panelban néztem, ott ír ennyit.Mit csinál az előző hsz.-edben írt ModalDialog()?
function ModalDialog(msg) {
$('<div />').html(msg).dialog({
modal: true,
buttons: {
Ok: function() {
$(this).dialog("close");
}
}
});
}Webfejlesztő eszközből derült ki, hogy "nem tudok egyszerre több ajax kérést intézni a szerver felé"? Hogyan vizsgálódtál?
Elindítottam több kérést a szerver felé ,az elsőnél a szerver oldalon beállítottam egy 1 perc sleep()-et, a többi csak egy sima echo volt. Addig nem jött válasz a többire, míg az első sleep()-es nem végzett. -
Sk8erPeter
nagyúr
válasz
Speeedfire #3009 üzenetére
Több információ kéne. Azt írtad, "Azt hittem az apache lehet a ludas, de minden kérésnél ott van, hogy pending." Hol van, hogy pending? Hol nézed? Webfejlesztő panelban, vagy csak a UI-on?
Mit csinál az előző hsz.-edben írt ModalDialog()? Nem azt csinálja, hogy blokkolja a UI-t, pont, mint a BlockUI?, amitől valójában elvileg mehetne több AJAX-kérés is a háttérben, csak a UI nem használható, hogy a felhasználó ne tudjon ide-oda kattintgatni?
Webfejlesztő eszközből derült ki, hogy "nem tudok egyszerre több ajax kérést intézni a szerver felé"? Hogyan vizsgálódtál?
Ezeket magunktól sajnos tényleg nem tudjuk kitalálni. -
Jim-Y
veterán
válasz
Speeedfire #3028 üzenetére
Szerintem sokat segítene, ha csinálnál belőle példát jsfiddle-re. A BE kérérseket is tudod mockolni, így tudod majd demózni a nem jól működő ajax kéréseket. Hátha közben meg is lesz a hiba...
Ahhoz, hogy tudd mockolni az ajax kéréseket, external resource-nak meg kell adni a mockjax-ot.
http://cdnjs.com/libraries/jquery-mockjax
A kód elején pedig mockolod a kéréseket:
https://github.com/appendto/jquery-mockjax
Kb így (nem az a lényeg, hogy mit adsz vissza úgy sem, hanem, hogy nem megy aszinkron. Ha jól értem a problémát...)
$.mockjax({
url: '/restful/fortune',
responseTime: 750,
responseText: {
status: 'success',
fortune: 'Are you a turtle?'
}
});Működő példát is tudnék mutatni, de elhalálozott momentán a jsfiddle :/
-
Speeedfire
félisten
Erre valaki tud megoldást?
-
Zedz
addikt
Sziasztok,
Lehet valahogy tesztelni egy kódom teljesítményét? Értem ez alatt azt, hogy például megírok valamit, majd megint megírom csak másféle megközelítéssel, és összevetni a teljesítményét a két kódnak?
-
biker
nagyúr
válasz
Sk8erPeter #3021 üzenetére
"- Fel nem fogom, minek kreáltál annyi darab inputpárt, ahány darab terméked van."
Még mindig nem annyi input mező van ahány termék, 2-300 termék is lehet, ezek azok a mezők ahova ezen termékrkből válogat
A többit köszönöm
-
Jim-Y
veterán
válasz
Sk8erPeter #3022 üzenetére
Igen-igen, az utóbbira gondoltam. Sajnos már láttam éles környezetben ilyet, azért is ragadt meg bennem xD
-
Sk8erPeter
nagyúr
Ezt csak most látom:
"Másrészt inline ev.handlerekkel csak egy handler-t tudsz definiálni egy eventhez"
Ez nem feltétlenül igaz, lásd ezt:
HTML:
<button id="mybutton" onclick="alert('Button has been clicked! --> UGLY inline stuff.');">Click this button</button>JS:
window.addEventListener('load', function () {
document.getElementById('mybutton').addEventListener('click', function () {
alert('Button has been clicked! --> Event handler in JS file - as you should ALWAYS do it.');
}, false);
});--> http://jsfiddle.net/4SeM5/
Mindkettő lefut, csak előbb az ocsmány inline-kód, majd a külön JS-kódban definiált fut le.
Abban az esetben viszont igaz, ha JS-kódban van mondjuk két külön window.onload = function(){...}, akkor az első felülbírálódik.
-
Sk8erPeter
nagyúr
"a " " jelet használni annyiból kedvezőbb nekem, hogy egy $valami behelyettesítéséhez nem kell azonnal '.$valami'. írni, mint ' ' esetén"
Ja, de sztem amúgy sem olyan jó ötlet a stringbe rakni a változót, én jobb' szeretem konkatenálni - Te is ezt tetted, szóval itt pont nem használtad ki a változó-behelyettesítést. Amúgy tömböt is lehet akár stringbe belerakni, bár sztem rettentő ocsmány:
$termek_jq.="\"{$query_tomb['termek_ean']}"\" : \"{$query_tomb['termek_nev']}: {$query_tomb['termek_ar']} Ft / db \" , ";Erre írtam a korábbit, hogy szerintem nem jó gyakorlat, de ízlések és pofonok. Meg ez talán a leglényegtelenebb rész, már eleve ott kezdődik a para, hogy PHP-vel van legenerálva a komplett JS-kód.
"Ha az ezek akármelyikébe beírt eseményt akarom figyelni, akkor kell egy onChange(#termek_ean1).... 15-ig esemény nem? Akkor 15x ki kell írni, vagy van rá jobb megoldás, hogy tudjam, a mondjuk 8-as mezőbe épp beírtak valamit, és ha igen, akkor írjunk ki valamit a lapra?"
Hogyne lenne... Igazából pontosan erről beszéltem korábban, előtte is leírtam az egyik alternatív megoldást, idézem magam:
"Meg lehetne oldani az egészet class-szal (class-okkal), és mindegyikhez egy darab általános event handler tartozhatna. A kódod semmi olyat nem tartalmaz, amit ne lehetne egy ilyen eseménykezelővel megoldani."
Tehát még egyszer: EGY darab event handlerre van szükséged, nem többre. Fúú, de jó, most látom, közben Jim-Y megmutatta, miről beszélek, így nem kell annyit hablatyolnom megint. Köszi, Jim-Y.
Amúgy vannak a HTML5-ös data-* attribútumok is, amelyek lehetővé teszik, hogy adott elemekhez egyéb információt is rögzíts, ezeket lekérni jQuery-vel nagyon egyszerű, de ez csak mellékszál volt, mint látható a példából, nincs rá szükséged."»» - Minden egyes termékazonosítóhoz legenerálsz egy-egy külön anonim event handlert. Minek?
Nem, a beviteli mezőkhöz írok ilyet, a termék azonosítók (2-300 vonalkód) a tömbben vannak, amiknek a key/value párját keresem a onChange eseményre"
DE!Akkor még egyszer elmondom: minden egyes termékazonosítóhoz legenerálsz egy-egy külön anonim event handlert. Nézd már meg a kódodat, amit belinkeltél, pontosan azt csinálod benne, amiről beszéltem.
Vágod, ott vannak azok a csúnya külön-külön kis .change( function(){ ... } ) kódocskák, azokból van jópár. Ha lenne száz terméked, akkor száz ilyet generálnál le?
Korábban erre mondtam, hogy általánosságban kell gondolkozni, úgy kell megtervezni, hogy számítasz egy rendszer bővítésére. Nem azt mondod, hogy 15 van, annyi is marad örökre, aztán ez a kód jó lesz majd vidékre.
Hozzáteszem, szerintem ez nem is tartozik a kliensoldalra, hogy az oldal HTML-kimenetébe be legyenek okádva a termékkód-termékadat párosítások."Igen, érdekli. Így kérte"
Hát jó, bár én ezt lehet, hogy egy külön dobozkába, vagy legalábbis valahogy elválasztva raknám, history-szerűen, vagy akkor már prependelném, nem appendelném, de ez aztán már abszolút más lapra tartozik."A php ciklus pont amúgy ezt generálja le"
Nem tudom, feltűnt-e, de korábban pont azt fejtegettem, milyen kód fog legenerálódni, szóval hidd el, értelmeztem a látottakat, és pontosan tudom, mi fog legenerálódni, nem túl összetett a kódrészlet, amit mutattál."Na egy ilyet hogy lehet akkor szebben, olvashatóbban megírni, azon kívül, hogy a 15 elem kérdést kirakom külön változóba, hogy átírhassam bármikor 35-re mondjuk"
Ezek szerint ez sem jött át: feltételezem, vagy adatbázisból szeded ezeket az adatokat, amiket legenerálsz, vagy beolvastad fájlból, vagy tököm tudja, mindenesetre ezeket bele tudod tömködni egy tömbbe. A tömbnek meg ugyebár van egy hossza. A tömb hosszát meg pontosan felhasználhatnád annál az ominózus ciklusnál, amennyiben a borzalmas gányolós kódnál maradunk. Akkor máris legalább egy fokkal rugalmasabb lenne a tákolmány. Mondjuk még stringbe is lehetne passzírozni ezt a generált kódot, ahogy fetch-eled adatbázisból.De inkább nem adok ötleteket további gányoláshoz.
Szóval ezeket kerüld. És akkor még egyszer: egy ciklusnál se legyen bedrótozva annak fejlécébe, hogy meddig mehet, csak kivételes esetekben, amikor garantáltan nem lesz valamiből több/kevesebb.(#3017) :
"Biztos én gondolom rosszul hogy egy adott text mezőbe bevitt adatot megkeresni id kell és nem class"
Ahogy mondod, te gondolod rosszul.
Ha rugalmas megoldást akarsz, nem id-zni kell.A jsFiddle-re felrakott kód így még durvább, mint amiről korábban beszéltünk.
A HTML-részre:
- illik az attribútumokhoz tartozó értékeket szépen idézőjelekbe rakni. Már az óvodában is így tanítják (jó lenne), nem a 90-es években vagyunk.
- Fel nem fogom, minek kreáltál annyi darab inputpárt, ahány darab terméked van.
- Lehetőleg ne használj <br />-eket a távolságtartáshoz. Szépen használj CSS-t, margint, paddinget, attól függően, mire van épp szükség. Word-dokumentumot sem úgy szerkeszt az ember normális esetben, hogy püföli az Entert, aztán valahol már kábé jó lesz. Normális dokumentum úgy van megszerkesztve, hogy rugalmasan állíthatók a térközök, egy helyen, nem ötszáz helyen. Jelen esetre értsd: ha szeretnéd kisebbre venni a távolságot, akkor normális esetben csak a CSS-kódban átírsz egy értéket, nem kell a HTML-kódhoz nyúlnod, és tippelgetned, hogy kb. hány sortörést kéne oda berakni vagy épp onnan kiszedni.
- Sajnos behánytad a HTML-kódba a JavaScript-kódokat is, inline attribútumokba, konkrétan itt számtalan onKeyPress-értékként adtad meg, mi is történjen a keypress event során. Mi van, ha szeretnéd átnevezni a függvényt? Akkor tényleg 15 helyen meg kell változtatni? Ha JS-kód írásáról van szó, akkor miért kell folyton buzerálni a HTML-kódot is? A különböző célra szolgáló nyelvek szépen legyenek elválasztva egymástól. Ez pontosan ugyanolyan ronda, mintha a CSS-kódot behánynád style-attribútumokba. Az is kerülendő, ez is. Az oka igazából ugyanaz.
A JS-kódra: - hát ezt már kielemeztük elég rendesen, hogy mitől ronda, kaptál javaslatot is a szépítésre eleget.Persze inkább kérdezz, ha még valami nem tiszta.
(#3019) :
Szerintem Jim-Y is valami olyasmi hibákra gondolt, amiket fentebb írtam."egységesen magyar"
Hát ez itt a probléma.Legyen egységesen angol. A programozás nyelve angol, akár tetszik, akár nem. Hülyén néz ki, hogy össze-vissza keverednek a nyelvek egy kódban (én már a kommentárjaimat is igyekszem angolul írni, bár ebben lehet engedményt tenni), de ha ez nem lenne elég, van olyan, aki utálja az ilyen kódot, ez csapatmunkánál nem mindegy, és ha már csapatmunka, előállhat olyan helyzet, hogy kűűűűfőőőődi embernek kellene megmutatnod a kódodat, és az meg egy büdös szót nem ért belőle. Ha utóbbi nem állhat elő, akkor se keverd a nyelveket.
(Ha svédül írnád, az is hülyén nézne ki, nehogy valami turulmagyar megsértődjön, hogy a magyarral bármi baj lenne.
)
(#3018) Jim-Y:
Kösz, sok időt megspóroltál nekem.
Szerk.:
+#3019: 22 másodperccel megelőztél."self-closing tags"
HTML5-ben pont nem kötelező. XML-ben és XHTML-ben természetesen az.
Egyébként én is ocsmánynak tartom, ha az <img .../>, <br />, <hr /> és hasonlók nincsenek lezárva. Én személy szerint sajnálom, hogy ez pont nem kötelező az ajánlás szerint. -
Jim-Y
veterán
Szia.
Nem megbántani akartalak, csak szerintem rossz stílusban írtad meg a kódot. Miért?
- quotation mark? [link] [link] [link] Tehát nem arról lenne szó, hogy invalid lenne tőle a kód, de "highly unrecommended". Egyrészt olvashatatlan is lesz tőle a kód, másrészt sok IDE-ben elrontja a syntax highlight-ot, harmadrészt a stackoverflow-s linkben is említett class hibákhoz vezethet. Nem is értem, hogy miért ne tenné valaki " " közé az értéket. A style guidok is elég egyértelműek ezen kérdést illetően: [link]
- inline event handlers? Ez sem ajánlott. Vannak hátulütői. Ezekről itt olvashatsz. [link] [link] Másrészt inline ev.handlerekkel csak egy handler-t tudsz definiálni egy eventhez.
Pszeudokód:
node.onclick = alert(1);
node.onclick = alert(2);A click eseményre csak 2-t fog alertelni, mert a második definíció felülírja az elsőt.
- self-closing tags? Ezt be kell látnom lehet, hogy rosszul tudtam. Én valamiért úgy emlékeztem, hogy az újabb html specifikációkban ezek elengedhetetlenek. Pl <br> nem helyes, csak <br />. Ezt lehet rosszul tudtam.
- szerintem egységesen magyar, hol keveredik angollal? Ez már szőrszálhasogatás.. felőlem mindenki olyan nyelven írja, ahogy akarja, tényleg
disableEnterKey(event)
value1 ... value12
De a nagyja tényleg magyar. Én csak simán elszoktam már tőleFőleg ha az összes API angolul van, akkor nem értem mi értelme magyarul írni. De ez egyéni szoc. problem.
-
biker
nagyúr
Köszi, tanulmányozom.
Két ponton nem értelek azonban
Csak az első sort hagytam benne, mert csak azt volt türelmem kijavítani. Szinte csak hiba volt benne.
<input type="text" class="termek" size="12"/>
<input type="text" class="termekDarab" value="1" size="2"/>e_e -
<input type="text" class="termekKedvezmeny" value="0" size="2"/>%
<input type=text size=12 id=termek_ean_1 name=termek_1 onKeyPress="return disableEnterKey(event)"><input type=text size=2 name=termek_db_1 value=1 onKeyPress="return disableEnterKey(event)">e_e -<input type=text size=2 name=termek_kedv_1 value=0 onKeyPress="return disableEnterKey(event)">%
szóval kivetted a name elemet, és az enter hatástalanító részt (sokan képtelenek a vonalkód olvasót átállítani, hogy a sorozat végén tab-ot adjon) és ez a rengeteg hiba?Meg ezek a magyar nevek
..keverve angol nevekkel, fő a konzisztencia.
szerintem egységesen magyar, hol keveredik angollal?
-
Jim-Y
veterán
Ez a kód ... O.O
Csak az első sort hagytam benne, mert csak azt volt türelmem kijavítani. Szinte csak hiba volt benne.
Meg ezek a magyar nevek..keverve angol nevekkel, fő a konzisztencia.
Nem is tudtam hogy elnevezni a változókat, mert annyira értelmetlennek találtam a példát, azért próbálkoztamMi lenne, ha leírnád, hogy mit szeretnél elérni a programmal, és segítenénk legalább elméletben, hogy hogyan kéne nekifogni?!
Üdv
megj: elsőre amikor megnyitottam a példát nem hittem a szememnek
-
biker
nagyúr
válasz
martonx #3016 üzenetére
[link]
Biztos én gondolom rosszul hogy egy adott text mezőbe bevitt adatot megkeresni id kell és nem class, ezért kérlek, egyszerűsítsd az általad elgondoltak szerint.
A fenti oldalra bemásoltam a generált kódot.a js rész elején a tömbben vannak a termékek, lehet puskázni az ean kódokat onnan a működtetéshez.
-
martonx
veterán
"Van 15 input type=text mező, termek_ean_1, termek_ean_2 ..... termek_ean_15
Ha az ezek akármelyikébe beírt eseményt akarom figyelni, akkor kell egy onChange(#termek_ean1).... 15-ig esemény nem? Akkor 15x ki kell írni, vagy van rá jobb megoldás, hogy tudjam, a mondjuk 8-as mezőbe épp beírtak valamit, és ha igen, akkor írjunk ki valamit a lapra?
Ha van, mi az?"Hehe, erre jók a classok
és az event.target Ez spéci jquery tudás lenne?
Szerk: ésez a válasz a legutolsó kérdésedre is
-
biker
nagyúr
válasz
Sk8erPeter #3014 üzenetére
Egyébként a PHP-kód vonatkozó részénél, amikor macskakaparásos idézőjelet kell használnod egy stringben, szerintem nyugodtan kihasználhatnád, hogy a stringeket aposztróffal is írhatod, és úgy nincs változó-behelyettesítés sem, így nem kell escape-elni az idézőjelet sem, tehát:
Megfogadható... a " " jelet használni annyiból kedvezőbb nekem, hogy egy $valami behelyettesítéséhez nem kell azonnal '.$valami'. írni, mint ' ' esetén, de ebből a szempontból teljesen érthető
Na, szóval a kód érdemi részére rátérve:
- Eleve rossz, hogy PHP-vel generálsz komplett JS-kódot, mert ott biztos, hogy valami koncepcionális hiba van, és lehetne sokkal általánosabban.
- Ha már ilyen megoldást választottál, és generálsz mindent, miért drótozod be az elemek számát a ciklusban? Lásd $i<16 --> miért pont 16? Miért nem egy változó van ott? Ha egyébként JS-kódbeli ciklusban szerepelne, az is rossz lenne, mert itt egy ismeretlen nagyságú valaminek a kalkulált hossza kellene, hogy szerepeljen, nem egy konkrét, bedrótozott szám. Ha valami be van drótozva, akkor ott gondolkodni kell, hogy miért is van az ott bedrótozva.Szóval most igazából elkövetted pont azt a hibát, amiről a korábbiakban beszélgettünk.
Van 15 input type=text mező, termek_ean_1, termek_ean_2 ..... termek_ean_15
Ha az ezek akármelyikébe beírt eseményt akarom figyelni, akkor kell egy onChange(#termek_ean1).... 15-ig esemény nem? Akkor 15x ki kell írni, vagy van rá jobb megoldás, hogy tudjam, a mondjuk 8-as mezőbe épp beírtak valamit, és ha igen, akkor írjunk ki valamit a lapra?
Ha van, mi az?- Minden egyes termékazonosítóhoz legenerálsz egy-egy külön anonim event handlert. Minek?
Nem, a beviteli mezőkhöz írok ilyet, a termék azonosítók (2-300 vonalkód) a tömbben vannak, amiknek a key/value párját keresem a onChange eseményre
Meg lehetne oldani az egészet class-szal (class-okkal), és mindegyikhez egy darab általános event handler tartozhatna. A kódod semmi olyat nem tartalmaz, amit ne lehetne egy ilyen eseménykezelővel megoldani.
Meg amúgy a kimeneti, legenerált JS-kódod tele lesz var value1, var value2, ... var value15 jellegű változókkal, ami gondolom nem kell mondani, hogy igen csúf.
(Amúgy még így pluszban nem tudom, mennyire jó ötlet, hogy mindig hozzáfűzögeted a #bufe_uzenet elem tartalmához az aktuálisan becsippantott kódot. Érdekel valakit az előző akárhány becsippantott elem?Igen, érdekli. Így kérte...
Mert ha igen, akkor is talán mehetne egy kinyitható, logolós részbe, mert így ránézésre zavaró lehet, hogy nem egyértelmű, az adott pillanatban mit csippantott be valaki.)
Te hogy oldanád meg, hogy van mondjuk 100 terméked egy lapon (de ide most csak 5-öt teszek be, ne floodoljam szét
var termek_jq = {"5999076200337" : "AAKG Shock Extreme narancs 25 ml: 210Ft / db " , "4005906404569" : "Active O2 áfonya: 550Ft / db " , "4005906005582" : "Active O2 alma: 550Ft / db " , "4005906404545" : "Active O2 alma-kiwi: 550Ft / db " , "4005906005032" : "Active O2 citrom: 550Ft / db " , "4005906004752" : "Active O2 maracuja-alma: 550Ft / db " };És van mondjuk 15db input meződ, ahova a vonalkódokat csipogtathatja (azért nem egy mező, mert termékenként a darabszámot is meg kell adni, és a termékenkénti kedvezmény beütése is kérve vagyon, így soronként van egy termek_ean, egy termek_db és egy termek_kedv mező, ezeket mind egy tömbbe gyúrva adom át posttal.
Tehát akármelyik mezőbe írsz be valamit, keresse meg ebben a tömbben a párját, és írja ki a szöveget
A php ciklus pont amúgy ezt generálja le,
var value1 = $("#termek_ean_1").val();
$("#termek_ean_1").change(function(){
var value1 = $(this).val();
$('#bufe_uzenet').append("<p>" + termek_jq[value1] + "</p>");
});var value2 = $("#termek_ean_2").val();
$("#termek_ean_2").change(function(){
var value2 = $(this).val();
$('#bufe_uzenet').append("<p>" + termek_jq[value2] + "</p>");
});var value3 = $("#termek_ean_3").val();
$("#termek_ean_3").change(function(){
var value3 = $(this).val();
$('#bufe_uzenet').append("<p>" + termek_jq[value3] + "</p>");
});var value4 = $("#termek_ean_4").val();
$("#termek_ean_4").change(function(){
...........Na egy ilyet hogy lehet akkor szebben, olvashatóbban megírni, azon kívül, hogy a 15 elem kérdést kirakom külön változóba, hogy átírhassam bármikor 35-re mondjuk
-
Sk8erPeter
nagyúr
Karma igen jól és tömören összefoglalta a lényeget, ami miatt finoman szólva nehezen elfogadható ez a megoldás.
De a kód több sebből is vérzik, ezt mindjárt.Egyébként a PHP-kód vonatkozó részénél, amikor macskakaparásos idézőjelet kell használnod egy stringben, szerintem nyugodtan kihasználhatnád, hogy a stringeket aposztróffal is írhatod, és úgy nincs változó-behelyettesítés sem, így nem kell escape-elni az idézőjelet sem, tehát:
$termek_jq.="\"".$query_tomb['termek_ean']."\" : \"".$query_tomb['termek_nev'].": ".$query_tomb['termek_ar']."Ft / db \" , ";
HELYETT lehetne ez is:
$termek_jq.= '"'. $query_tomb['termek_ean'] .'" : "'. $query_tomb['termek_nev']. ': '. $query_tomb['termek_ar']. 'Ft/db " , ';
Sztem jobban néz ki. (Például ha HTML-kódot kell neadjisten generálni, annál is az attribútumokat ugye idézőjellel szokás írni, ott is elkerülhető az állandó escape-elgetés így.)
Na de a kód tartalma már annál kevésbé néz ki jól. Erről megint mindjárt.Amúgy én PHP-kódnál és lehetőleg más nyelvekben is inkább kerülni szoktam a stringben "elrejtett" változóneveket (amik behelyettesítődnek), ezzel persze biztos vannak, akik nem értenek egyet, de engem kifejezetten zavar, ha nem látszik kapásból a kódból, hogy oda bizony egy "kívülről hozzácsapott" változó értéke kerül - még akkor is, ha az IDE highlightolja az adott stringben a megfelelő részt. Nem beszélve arról, hogy tömbindexeknél vagy objektumok attribútum/metódushívás-eléréseinél a stringben így még bűvészkedni is kell, hogy az valóban behelyettesítődjön. Bár bevallom, pl. shell scripteknél sokszor kivételt teszek.
Na, szóval a kód érdemi részére rátérve:
- Eleve rossz, hogy PHP-vel generálsz komplett JS-kódot, mert ott biztos, hogy valami koncepcionális hiba van, és lehetne sokkal általánosabban.
- Ha már ilyen megoldást választottál, és generálsz mindent, miért drótozod be az elemek számát a ciklusban? Lásd $i<16 --> miért pont 16? Miért nem egy változó van ott? Ha egyébként JS-kódbeli ciklusban szerepelne, az is rossz lenne, mert itt egy ismeretlen nagyságú valaminek a kalkulált hossza kellene, hogy szerepeljen, nem egy konkrét, bedrótozott szám. Ha valami be van drótozva, akkor ott gondolkodni kell, hogy miért is van az ott bedrótozva.Szóval most igazából elkövetted pont azt a hibát, amiről a korábbiakban beszélgettünk.
- Minden egyes termékazonosítóhoz legenerálsz egy-egy külön anonim event handlert. Minek? Meg lehetne oldani az egészet class-szal (class-okkal), és mindegyikhez egy darab általános event handler tartozhatna. A kódod semmi olyat nem tartalmaz, amit ne lehetne egy ilyen eseménykezelővel megoldani.
Meg amúgy a kimeneti, legenerált JS-kódod tele lesz var value1, var value2, ... var value15 jellegű változókkal, ami gondolom nem kell mondani, hogy igen csúf.
(Amúgy még így pluszban nem tudom, mennyire jó ötlet, hogy mindig hozzáfűzögeted a #bufe_uzenet elem tartalmához az aktuálisan becsippantott kódot. Érdekel valakit az előző akárhány becsippantott elem? Mert ha igen, akkor is talán mehetne egy kinyitható, logolós részbe, mert így ránézésre zavaró lehet, hogy nem egyértelmű, az adott pillanatban mit csippantott be valaki.)Szóval a kérdésre válaszolva ja, elég gány, bocsi.
(#3003) Karma :
"Egyvalamivel egészíteném ki. A pluginba szervezésnek lenne még egy kézzel fogható előnye is: ebben a formában csak egy slider lehet az oldalon, egy helyes megoldással meg akármennyi, függetlenül a másiktól."
Jaja, egyetértek. De igazából ez benne volt az előzőben, legalábbis erre akartam utalni azzal a résszel, hogy "mi van, ha te valamiért több slidert is el akarsz helyezni az oldalon, és az egyikre más opciókat akarsz érvényessé tenni? Erre nem válasz, hogy de úgyse akarok ilyet."Meg hogy miért is gáz, hogy a selectorok is be vannak drótozva. Persze úgy még egyértelműbb, ahogy Te írtad.
-
biker
nagyúr
válasz
Sk8erPeter #3002 üzenetére
Nos, megint sikerült pongyolán fogalmazzak...
De az ilyen szintű bedrótozást semmi nem indokolja.
Itt olyan dolgokról beszélünk, amit 5 perc többletmunkával bele lehet rakni: default opciók, és a felülbírálható opciók lehetőségének kialakítása.Valóban, teljes mértékben egyetértek
(szerintem ki is javítom a kolléga után, úgyis kihagyott még 3-4 funkciót, amit bele kell tegyek)Ez a "húszezeré megcsinálom" példa nem értem, hogy jött ide, az egyedi webalkalmazások fejlesztése meg aztán végképp nem értem, miért is zárná ki a JavaScript+jQuery-tudást.
Éppen ellenkezőleg. Amit itt írtál, ott is "mezei" weblapokról beszélsz, mintha a kliensoldali kódolás valami vérpistis dolog lenne - pedig egyedi webalkalmazásokhoz, akár üzleti szektorban is NAGYON erősen kellhet a kliensoldali programozás, így a jQuery is. Manapság pont minden arrafelé halad, hogy a kliensoldali rész is faszán el legyen készítve, AJAX-os kérések történjenek a háttérben, és így tovább, és az, aki ezeknek a fejlesztését végzi, pont nem jó, ha egy vérpisti, ehhez is szakmai tudás kell. Hogy jön ide a csicsa? Nem kell összekeverni a JavaScript-programozást a dizájnerkedéssel, meg a sitebuilddel, van ilyen része is, meg van más része is.
Amúgy azt magyarázd már el nekem plíz, hogy mit jelent az, hogy "az adattartalom a lényeg"?Ezt próbáltam értelmezni, de valahogy nem sikerült.
Az utolsó mondatra külön előre: Úgy értem, hogy a lényege, hogy a tárolt adatok (mysql) hogyan nyerhetők ki, milyen kimutatások készíthetők, milyen nyilvántartással, mennyire rugalmas, mennyire pontos, mennyire naplózott, stb.
Atöbbire: néha én is hajlamos vagyok a jquery-t összekeverni az "eye-candy" opciókkal (colorboxok, popupok, lekérdezések, stb)
És elfelejtem, hogy akárcsak egy sortable tables is milyen hasznos, és jquerys, vagy ugye a grafikonok, stb
Na itt fogalmaztam hülyén.
Igen, 10 éve még nem volt gond a minden gombnyomásra form küldés, ma már elvárás hogy a háttérben olvasson/írjon adatokat, dolgozzon, stbÉs ennek örömére pont tegnap du írtam is gyors egy valaki kérésére pár sort, remélem sok kivetni való nincs benne (ennyiben csak nem)
Van egy vonalkódos eladási rendszer, 15 EAN kód mezővel (felét se adnak el egy embernek, büfé, elég a 15) ahol lecsipogja a kódokat, majd elküldi, a rendszer kiírja, mennyi a vége, mit adott el tételesen, mennyi a darabár.
De kérték, hogy elküldés előtt lecsippantáskor írja ki mit olvasott le, hát erre is csak ezt tudom bevetniA termékek beolvasva tömbbe, ean kód a kulcs, név és ár az értéke, majd ha lecsippant egy mezőbe egy kódot(mező id-je alapján figyelve), a bufe_uzenet divbe írkálja ki mit olvasott le.
$termek_jq.="\"".$query_tomb['termek_ean']."\" : \"".$query_tomb['termek_nev'].": ".$query_tomb['termek_ar']."Ft / db \" , ";
...
...
...
$(document).ready(function() {
var termek_jq = {<?php echo $termek_jq; ?>};
<?php
for ($i=1; $i<16; $i++)
{
echo "var value$i = $(\"#termek_ean_$i\").val();
$(\"#termek_ean_$i\").change(function(){
var value$i = $(this).val();
$('#bufe_uzenet').append(\"<p>\" + termek_jq[value$i] + \"</p>\");
});";
}
?>
});Gondolom emberünk legyártotta volna kézzel ctrl+c ctrl+v-zve a 15 eseményt a ciklus helyett, és egybetűs változók lennének...
Ez így nagyon gány?
-
Speeedfire
félisten
Ez csak egy példa lett volna. Általában így szoktam használni az ajax kéréseket:
$.ajax({
url: url,
type: 'post',
async: true,
data: {
example_1: 2,
example_2: 1
},
dataType: 'json',
beforeSend: function() {
ModalDialog('Az adatok feldolgozása folyamatban van.');
},
success: function(data) {
if(data.error === false) {
ModalDialog('Az adatok feldolgozása befejeződött!');
} else {
var message = data.message + '<br/>';
if (typeof data.error_items != 'undefined') {
for(var i=0; i<data.error_items.length; i++) {
message = message + '<b>Azonosító neve:</b> ' + data.error_items[i].id + '<br/>';
}
}
ModalDialog(message);
}
},
error: function(jqXHR, textStatus, errorThrown ) {
if(jqXHR.status == 0) {
ModalDialog('A szerver nem válaszolt a kérésre, próbálja meg később!');
} else if(jqXHR.status == 403) {
ModalDialog('Nincs jogosultsága ehhez a művelethez!');
} else if(jqXHR.status == 404) {
ModalDialog('Hiba történt a feldogozás során!');
}
}
}); -
Karma
félisten
válasz
Speeedfire #3007 üzenetére
És hol/hogyan dolgozod fel az AJAX hívás eredményét? Mintha nem lenne callbacked a $.ajax({url: baseurl+'/site/ajaxtest'})-re kötve.
Ez elég rosszat sejtet, például hogy a visszakapott promise objektumot szinkron bevárod...
-
Speeedfire
félisten
válasz
martonx #3006 üzenetére
A js-ben csak ennyi van nálam:
$.ajaxSetup();
accepts: Object
async: true
contentType: "application/x-www-form-urlencoded; charset=UTF-8"
contents: Object
converters: Object
flatOptions: Object
global: true
isLocal: false
jsonp: "callback"
jsonpCallback: function (){var e=On.pop()||b.expando+"_"+vn++;return this[e]=!0,e}
processData: true
responseFields: Object
type: "GET"
url: "http://server.dev/"
xhr: function In(){try{return new e.XMLHttpRequest}catch(t){}}
__proto__: Object
$.ajax({url: baseurl+'/site/ajaxtest'});
Object {readyState: 1, getResponseHeader: function, getAllResponseHeaders: function, setRequestHeader: function, overrideMimeType: function…}Aztán ennyi. Innentől kezdve mintha sorosan dolgozna.
Emiatt nem tudom, hogy most js vagy szerveroldali a hiba. Apache-ban semmi extra nincs beállítva. -
martonx
veterán
válasz
Speeedfire #3005 üzenetére
Nincs varázsgömbünk, de az 100% hogy nálad a js kódban lesz a hiba.
-
Speeedfire
félisten
Jquery 1.9.1-et használok és nem tudok egyszerre több ajax kérést intézni a szerver felé. Az ajax() minden esetben megvárja a response-t és csak utána folytatja a többi kérést. Megnéztem és minden kérés async: true értékkel fut le. Azt hittem az apache lehet a ludas, de minden kérésnél ott van, hogy pending. Mi lehet a gond?
A $.ajaxSetup() is async: true értéket dob. -
Jim-Y
veterán
Az is látszik amúgy, hogy egy egyszerű lintelésen se futtatták át, mert akkor nem maradtak volna benne ilyen hibák:
Running "jshint:files" (jshint) task
tohint.js
1 |'use strict';
^ Use the function form of "use strict".
41 | if(n==i)
^ Expected '===' and instead saw '=='.
64 | w=ut_slider_get_width();
^ 'w' is not defined.
65 | offset=w*n;
^ 'offset' is not defined.
65 | offset=w*n;
^ 'w' is not defined.
68 | $(this).css('left', (0-offset) +"px");
^ 'offset' is not defined.1 az igazából nem az ő "hibája", de az igen, hogy nem használ, vagy legalábbis a kódrészletben nincs
Bad habit:
- Új sorban nyitni a { zárójelet függvény definíciónál az automatikus semicolon insertion miatt. Több style guide is ellenjavallja. Gondolom C++ -s emberke írta a kódot.
- Lehet csak nekem szúrja a szemem, de sorozatosan $.each -nél $(this) -t használ az aktuális elemre, amikor az eachnek van erre argumentuma, ha azt használná, akkor egyrész megspórolná a this használatát ami szintúgy ellenjavallot, illetve még olvashatóbbá, és egyértelműbbé is tenné a kódot.Már csak azért is bad habit így használni, mert ha megszokja, akkor esetleg legközelebb egy ilyen helyzetben is így csinálja, és néz majd, hogy miért nem az történik, mint amire számítana:
$('.slide').each(function (i) {
$(this).css('backgroundColor', 'red');
setTimeout(function() {
$(this).css('backgroundColor', 'green');
}, 1000);
});A többit pedig már leírták. De azért a w-t, meg az offsetet globálissá tenni azért elég csúnya
-
Karma
félisten
válasz
Sk8erPeter #2999 üzenetére
Valami hasonlót akartam írni
Egyvalamivel egészíteném ki. A pluginba szervezésnek lenne még egy kézzel fogható előnye is: ebben a formában csak egy slider lehet az oldalon, egy helyes megoldással meg akármennyi, függetlenül a másiktól.
-
Sk8erPeter
nagyúr
"A benne lévő dolgok, amiket írsz, teljesen érthetők, szerintem a kollégának azért sikerült így, és nekem azért nem tűnt zavarónak pl a w=694 és társai, mert egyértelműen kötött designba készítette, ahol 694px a slider box mérete."
De az ilyen szintű bedrótozást semmi nem indokolja.
Itt olyan dolgokról beszélünk, amit 5 perc többletmunkával bele lehet rakni: default opciók, és a felülbírálható opciók lehetőségének kialakítása. Ilyenekre tengernyi példakód található neten, például a korábban linkelt tutorialban egy egész konkrét és egyszerű példa van:"Accepting Options
As your plugins get more and more complex, it's a good idea to make your plugin customizable by accepting options. The easiest way to do this, especially if there are lots of options, is with an object literal. Let's change our greenify plugin to accept some options.(function ( $ ) {
$.fn.greenify = function( options ) {
// This is the easiest way to have default options.
var settings = $.extend({
// These are the defaults.
color: "#556b2f",
backgroundColor: "white"
}, options );
// Greenify the collection based on the settings variable.
return this.css({
color: settings.color,
backgroundColor: settings.backgroundColor
});
};
}( jQuery ));Example usage:
$( "div" ).greenify({
color: "orange"
});The default value for color of #556b2f gets overridden by $.extend() to be orange."
vagy akár bele lehet nézni a jQuery source code-jába, stb.
"Nem ez a főállásom, és nem is "weblapos" vagyok, aki egész nap weblapokat gyárt "húszezeré' megcsinálom" verzióban. Az csak a nagyon uborkaszezonban, de akkor is inkább készen megveszem 50USD-ért themeforesten.
Én egyedi alkalmazásokat fejlesztek inkább weben használható kivitelben, hogy a T. usernek ne legyen gépfüggősége. beléptető/tagnyilvántartó rendszer, crm rendszer, most épp egy szexhirdetős oldalt annak minden szépségével és gondjával,vés hasonlók. De ezeknél a legkevesebb a kinézet, a csicsa, az adattartalom a lényeg..."
Ez a "húszezeré megcsinálom" példa nem értem, hogy jött ide, az egyedi webalkalmazások fejlesztése meg aztán végképp nem értem, miért is zárná ki a JavaScript+jQuery-tudást.Éppen ellenkezőleg. Amit itt írtál, ott is "mezei" weblapokról beszélsz, mintha a kliensoldali kódolás valami vérpistis dolog lenne - pedig egyedi webalkalmazásokhoz, akár üzleti szektorban is NAGYON erősen kellhet a kliensoldali programozás, így a jQuery is. Manapság pont minden arrafelé halad, hogy a kliensoldali rész is faszán el legyen készítve, AJAX-os kérések történjenek a háttérben, és így tovább, és az, aki ezeknek a fejlesztését végzi, pont nem jó, ha egy vérpisti, ehhez is szakmai tudás kell. Hogy jön ide a csicsa? Nem kell összekeverni a JavaScript-programozást a dizájnerkedéssel, meg a sitebuilddel, van ilyen része is, meg van más része is.
Amúgy azt magyarázd már el nekem plíz, hogy mit jelent az, hogy "az adattartalom a lényeg"?Ezt próbáltam értelmezni, de valahogy nem sikerült.
-
biker
nagyúr
jaj, mielőtt nekem estek, nem szólom én le a weblapgyáros embereket, csak épp engem nem motivál ez a része, hogy egész nap "mezei" weblapokat gyártsak épp a divatnak megfelelően, épp most parallax scroll, most meg reszponzív design, most a bootstrap a menő, most a FB, köszi, nem...
Lehet hogy egyszer megszorulok, és ezt csinálom én is, de egyelőre átadom a stafétát.
Még a végén én is eljutnék oda, mint az n31 ilyen ismerősöm, hogy elkezd magának gyártani weblap motort, me' az jobb mint a WP és a Joomla és a Drupal, me' mind szar
Új hozzászólás Aktív témák
- BESZÁMÍTÁS! Asus PRIME B450M R5 2600X 16GB DDR4 512GB SSD GTX 1060 3GB AeroCool Quantum Mesh V3 400W
- KERESEM! LG UltraGear 45GS95QE // 39GX90SA
- ÁRGARANCIA!Épített KomPhone Ryzen 7 9700X 32/64GB RAM RX 9070 16GB GAMER PC termékbeszámítással
- BESZÁMÍTÁS! Apple MacBook Pro 14 M4 Max 36GB RAM 1TB SSD macbook garanciával hibátlan működéssel
- Dell 16 Inspiron 5625 FHD+ IPS Ryzen5 5625U 4.3Ghz 16GB 512GB SSD Radeon RX Vega7 Win11 Garancia
Állásajánlatok
Cég: FOTC
Város: Budapest