Keresés

Új hozzászólás Aktív témák

  • martonx

    veterán

    válasz biker #3015 üzenetére

    "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 :C

    [ Szerkesztve ]

    Én kérek elnézést!

  • Sk8erPeter

    nagyúr

    válasz biker #3015 üzenetére

    "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! :DDD 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. :D

    "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. :DDD De inkább nem adok ötleteket további gányoláshoz. :DDD
    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. :DDD
    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. :DD
    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 :D), 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. :D 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. :DD (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. :DDD)

    (#3018) Jim-Y:
    Kösz, sok időt megspóroltál nekem. :D
    Szerk.:
    +#3019: 22 másodperccel megelőztél. :DDD

    "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. :D

    [ Szerkesztve ]

    Sk8erPeter

Új hozzászólás Aktív témák