Dátum ellenőrzés + szamárvezető
Sziasztok!
Fejlesztek egy weblapot, és felmerült egy olyan igény, miszerint a dátum mezőkbe az adott formátumú dátumot úgynevezett szamárvezetős megoldással lehessen beírni - user oldali javascript a megoldás.
A dátum formátum: "2008. 03. 30."
A szamárvezető alatt azt értem, hogy alapesetben az adott input mező így nézzen ki:
____. __. __. És a billentyűn csak annyit kelljen beírni, hogy 20080330, és akkor automatikusan a fenti formátumban íródik be. Tehát a javascript minden szám beírásnál tulajdonképpen cseréli a következő alsóvonalat a beírt számra, és amikor a ". "-höz ért, akkor ugrik a következő _-ra.
Az alapeset ez lenne, azonban van, amikor már konkrét, adatbázisból vett dátumot kell esetleg átírni, és akkor ez a szám lenyomásnál cserélem a következő alsóvonalat az éppen beírt karakterre nem célravezető...
Próbáltam erre keresni valami publikus js-t, de nem találtam, csak ilyen alap dátum ellenőrző szkripteket, de hát nem is igazán tudom, hogy miként lenne érdemes erre rákeresni, gondoltam itt hátha találkozott már valaki ilyennel, és eszébe jut valakinek egy régi általa ismert megoldás..
Előre is köszönöm!
Üdv,
Ákos
■ Fejlesztek egy weblapot, és felmerült egy olyan igény, miszerint a dátum mezőkbe az adott formátumú dátumot úgynevezett szamárvezetős megoldással lehessen beírni - user oldali javascript a megoldás.
A dátum formátum: "2008. 03. 30."
A szamárvezető alatt azt értem, hogy alapesetben az adott input mező így nézzen ki:
____. __. __. És a billentyűn csak annyit kelljen beírni, hogy 20080330, és akkor automatikusan a fenti formátumban íródik be. Tehát a javascript minden szám beírásnál tulajdonképpen cseréli a következő alsóvonalat a beírt számra, és amikor a ". "-höz ért, akkor ugrik a következő _-ra.
Az alapeset ez lenne, azonban van, amikor már konkrét, adatbázisból vett dátumot kell esetleg átírni, és akkor ez a szám lenyomásnál cserélem a következő alsóvonalat az éppen beírt karakterre nem célravezető...
Próbáltam erre keresni valami publikus js-t, de nem találtam, csak ilyen alap dátum ellenőrző szkripteket, de hát nem is igazán tudom, hogy miként lenne érdemes erre rákeresni, gondoltam itt hátha találkozott már valaki ilyennel, és eszébe jut valakinek egy régi általa ismert megoldás..
Előre is köszönöm!
Üdv,
Ákos
Helytelen cím
Ha egy moderátor olvassa ezt esetleg, akkor kérem javítsa.
A dátum ellenőrzés szerveroldalon már természetesen meg van oldva, ezzel nincs is semmi gond.
más
Vagy mondjuk selectekkel dolgoznál...
Re:
Felmerült ez a megoldás is, azonban a viszonylag nagy számú dátum mező és az objekum orientált rendszer adottságai miatt minden template használat előtt szét kellett volna bontani a (szerkesztői) oldalanként 10-15 dátumot, majd beküldésnél egyesíteni.
Megoldható lett volna így is persze, de a megrendelőnek valószínűleg nem lett volna esztétikus - mondjuk nekem sem az, meg plusz meló.. :)
Aki meg nem használ JS-t, az biztonsági okokból jól teszi, viszont semmiféle hátrányt nem szenved, ő beírja kézzel a helyes formátumban a dátumot (input label alatt ott van megjegyzésben az engedett formátum), vagy az adott sitehoz engedélyezi a JS-ek futtatását...
Az előző hsz-ben lévő példa még tökéletesíthető lenne, pl:
- évek első számjegye 1 vagy 2 lehessen (bár a jelenlegi rendszerben 2k előtti dátum sem fordul elő)
- évek második számjegye 2k előtti dátum nem létezése esetén korlátozható lenne akár 0-ra is, de ez már csak szőrszálhasogatás.. :)
Viszont még:
- hónapok első számjegye 0 vagy 1 lehessen csak
- napok első számjegye 0,1,2,3 lehessen csak
De ennek megoldását az olvasókra bírom, mivel első átírási próbálkozásomra érdekes eredményeket produkált a szkript, (vettem fel plusz szabályokat, azonban azokat nem vagy nem megfelelően vette figyelembe), aztán végül rájöttem, hogy tök felesleges is, szerver oldal mindent megold egy hibaüzivel..
Aki hü**e azon meg nem lehet segíteni sem javascripttel, sem szerveroldali megoldásokkal :)
1 lehetséges megoldás
Végül sikerült rátalálnom, miután beugrott a keresési kulcsszó: maszk.
Egy lehetséges megoldás:
Includolt JS fájlba tehető rész:
HTML kódba, valahova a form elem zárása után teendő javascript:
Remélem a jövőben ez majd segít valakinek :)
Üdv: Ákos
jquery-s megoldás
Re:
Köszönöm a linket, végül (of course) kicseréltem erre, és pontosan az valósítható meg vele, amit kértek. Bekattintok az input mezőbe, akkkor rögtön aláhúzásokkal jelzi, hogy hova mehet a beírás, hol vannak fix karakterek, stb. Normálisan kezeli az input alap értékét, akárhova belekattintok törölhető normálisan (a fenti talált megoldásomnál voltak a törléssel is problémák).
Ja és képzeld el, csoda történt: tetszett a megrendelőnek is :)
Bocsi, hogy csak most írtam, mert még a beírás napján olvastam délután, és estére át is heggesztettem a másik megoldást erre, írtam is, csak valamilyen oknál fogva eltünt a hsz-em, lehet csak fáradt voltam, és nem vártam meg, amíg elküldődik teljesen, hanem bezártam a böngészőt. Teljesen mind1. :)
Köszönöm a tökéletes megoldást!
Üdv,
Ákos