ugrás a tartalomhoz

text input mezőben összeg tagolt megjelenítése

Fedor · 2006. Jan. 4. (Sze), 13.47
Sziasztok!

Kedvenc megrendelőm előállt egy olyan kéréssel, hogy egy input mezőben, ahova egy Ft összeget kell beírni, már beírás közben tagolva jelenjen meg, tehát pl. így: 1.584.744, mondván, hogy áttekinthetőbb az űrlapot kitöltő számára. Lehetséges ez egyáltalán? Ráadásul, hogy csavarjak még egyet rajta, jó lenne ha az űrlap elküldésekor ez ennek ellenére tagolás nélkül menne tovább, mert számként tárolnám le az adatbázisban (műveleteket kell vele később végeznem), bár ezt utóbbit még lehet, hogy meg tudom oldani php-vel, ha egyszerűbb megoldás nincs.

Előre is köszi a tippeket, ha van rá megoldás, vagy a megrendelőm felé továbbítható megerősítést, ha nincs.
 
1

van megoldás

Hojtsy Gábor · 2006. Jan. 4. (Sze), 15.04
Szép feladat. JavaScripttel tudod figyelni, hogy a mező tartalma változik, ha változik, át tudod írni. Ez mondjuk idegesítő lesz a felhasználónak, aki elkezd egy számot beírni, és közben ugrál a beírt dolog, meg belekerülnek részletek... Le kell kezelned, ha valamiért szóközt ír, ahol pontot akarsz tenni, vagy vesszőt a pont helyett (angolszász számírás). Ez egy jó feladat, van vele munka. A PHP oldala pofon egyszerű, minden karaktert kiveszel belőle, ami nem szám, és úgy kezeled:
<?php
  $szam = preg_replace("![^0-9]!", "", trim($_POST['szam']));
?>
2

Hát pont ez az...

Fedor · 2006. Jan. 4. (Sze), 15.39
Pont ez a gond, hogy a Javascript-et jóval felületesebben ismerem, mint a PHP-t (és akkor még finoman fogalmaztam), meglévő kódot tudok alkalmazni, kisebb nagyobb mértékben átalakítani saját igényeimnek, az alapvető dolgokat tudom magamtól is (window.open és társai), de egy teljesen új komplex script-et írni...

Amúgy szerintem is baromság, elég lenne ez a tagolás az adatbázisból beolvasott adat megjelenítésekor is (bár így hirtelen arra se tudok megoldást, nem volt még szükségem ilyesmire eddig, de az már php, valszeg könnyebben boldogulok vele). Lehet, hogy meg is próbálom lebeszélni róla, de azért ennek ellenére érdekelne a megoldás (ha van), mert hátha hajthatatlan.

Üdv,
Fedor
3

tagolás kiírásnál

Hojtsy Gábor · 2006. Jan. 4. (Sze), 15.44
A number_format() könnyedén használható PHP-ben ilyen tagolásra. A JS-t illetően pedig mindig azt kell átgondolni, hogy miként fogadja a felhasználó azt, hogy változik "alatta" az input mező tartalma. Szerintem nem érti, azt gondolja, hogy hiba van. Aki meg tudja csinálni, szerintem az sem teszi emiatt.
4

egy megoldás

Táskai Zsolt · 2006. Jan. 4. (Sze), 15.49
egy viszonylag jól átgondolt webalkalmazásban - az OTP házibankjában - úgy csinálják, hogy a mező elhagyásakor formáznak. így nem változik alattad az adat, de rögtön érted, hogy mi történt a változáskor, és a funkció tényleg segít egy ránézésre ellenőrizni a beírt értéket. esetleg próbáld ezt megmutatni a megrendelőnek.
Tasi
5

OTP

Fedor · 2006. Jan. 4. (Sze), 15.53
Még jó, hogy OTP-s vagyok, majd jól rátekintek a forrására :-)

Köszi a tippeket!

Üdv,
Fedor
7

nem müxik

Fedor · 2006. Jan. 5. (Cs), 12.22
Kipróbáltam az otp-s javascript-et, ami szépen meg is formázza az input mező tartalmát, csakhogy a form az így formázott számot küldi tovább. Próbáltam összeadást végezni a továbbított számmal, de csak az első pont előtti részt veszi figyelembe (500000 helyett 500). Gondoltam sebaj, próbálkozom preg_replace-szel, konkrétan abban a formában, ahogy ajánlottad, de az nem szedi ki a pontokat. Előtte, utána ugyanaz marad (500.000).

Megvagyok én áldva ezzel a formázgatással...

Üdv,
Fedor
8

Megvan...

Fedor · 2006. Jan. 5. (Cs), 12.29
Közben tovább kisérletezgettem, ha a preg_replace-be nem azt írom, hogy [^0-9] hanem, hogy [\.] (elvileg csak pontok lehetnek benne), akkor a kívánt eredményt kapom.

Azért kiváncsi lennék, hogy az első verzió miért nem müxik, mert az lenne az igazán hülyejúzer-biztos megoldás...

Üdv,
Fedor
16

oh, bocsánat

Hojtsy Gábor · 2006. Jan. 5. (Cs), 21.41
Bocsánat, én vagyok a hibás. Lefelejtettem a delimitert, ami ugye a preg mintát két oldalról közrefogja. A [^0-9] egy olyan karakter osztályt jelöl, ami nem számokat tartalmaz, ha delimiter nélkül írod be, akkor viszont a [] lesz a delimiter, és azt mondja a minta, hogy az elején van egy szám... Hát nem azt akartad :) Javítottam a hozzászólásban.
6

konkrét megoldás

Hodicska Gergely · 2006. Jan. 4. (Sze), 16.43
Szia!


Itt a keresőben is sok minden érdekeset lehet találni. :)


Felhő
9

Input mezők

Dualon · 2006. Jan. 5. (Cs), 12.57
Én különálló input mezőket raknék be (az összeg maximális hossza feltehetően ismert), és CSS-sel addig formáznám, míg a kívánt eredmény lenne. Kinézhet akár úgy is mintha egy mező lenne az egész, vagy akár egyetlen aláhúzás, melyet pici szünetek szakítanak meg.

Dúalon
http://e-arc.hu/
10

<Nincs cím>

suexID · 2006. Jan. 5. (Cs), 13.15
Ez a megoldás szerintem egyáltalán nem felhasználóbarát. Ha belegondolsz, a felhasználó miből tudja, hol kell kezdeni a gépelést? Más dolog egy csekk, vagy banki átutalás, ott az ember könnyedén tud "pozícionálni" a tollával, de még így is elég sok ember elcseszi a csekk kitöltést, a neten még többen elcsesznék.
11

Megjelenítés kérdése

Dualon · 2006. Jan. 5. (Cs), 15.59
Szerintem ez pusztán megjelenítés kérdése. Ahogy a tollat pozícionálod, a mezőre is teheted a fókuszt, sőt, itt csak a fantázia szab határt az egyértelműsítésnek.
Előnye a JS-es, menet közbeni átalakítással szemben? Kérdéses. Szerintem felhasználóbarátabb, de nem kardoskodom mellette.

D.
http://e-arc.hu/
12

Nincs tapasztalatom

suexID · 2006. Jan. 5. (Cs), 16.30
Én még nem láttam ehhez hasonló megoldást, így lehet, hogy te is elképzelsz valamit én meg a leírásod alapján valami tök másra asszociálok. Én nekem ez bonyolultabbnak tűnik, mint amit a témaindító üzenetben olvashattunk, és a téma indítója már azt is erősen kivitelezhetetlennek tartotta saját részről, hát még ezt az általad javasolt módszert. Ez persze nem jelenti azt, hogy amit javasolsz rossz, én nem is állítom ezt, mivel látatlanba nem ítélek.
13

Esetleg...

Gáldi Ákos · 2006. Jan. 5. (Cs), 16.48
Az alábbi linken egy lehetséges megoldást találni. Persze szebben is meg jobban is lehetne, de én sem vagyok egy nagy javascript spieler. :)

LINK

Üdv!
14

Az első hibás

suexID · 2006. Jan. 5. (Cs), 17.33
Az első megfordítja a számot, tehát 1234 helyett 4321 lesz! :)
15

<Nincs cím>

Gáldi Ákos · 2006. Jan. 5. (Cs), 19.14
Ohh! Köszi!

Javítottam.