Autor Zpráva
Prefin
Profil
Ahoj.
Trochu jsem se zasekl na převedení čísla z formátu měny do zase čistého.
Číslo se formátuje pomocí metody toLocaleString() (JQuery):
...
$( "#amount" ).val( ui.value.toLocaleString() + " Kč" );
...
Odstranění znaků
function OdstranZnaky($text) {
    $co = Array(" ","Kč");
    $cim = "";
    return Str_Replace($co,$cim,$text);
}
Zformátované číslo má tvar
2 600 000 Kč
Měna zmizí, ale mezery to prostě neodstraní. Nevkládá tam JQuery nějaký jiný bíly znak?

Díky
Chamurappi
Profil
Reaguji na Prefina:
Nevkládá tam JQuery nějaký jiný bíly znak?
To je podivná otázka v kategorii PHP.
Já bych řekl, že tam jQuery nevkládá vůbec žádné znaky, protože metoda toLocaleString není v jQuery.

Zformátované číslo má tvar
Ne nutně.

jsem se zasekl na převedení čísla z formátu měny do zase čistého
Proč to děláš?
Prefin
Profil
Chamurappi:
„Nevkládá tam JQuery nějaký jiný bíly znak?“
To je podivná otázka v kategorii PHP.
Já bych řekl, že tam jQuery nevkládá vůbec žádné znaky, protože metoda toLocaleString není v jQuery.
Aby to formátovalo, musím načítat v hlavičce
<script src="js/jquery.js"></script>
<script src="js/jquery-ui.js"></script>
takže jsem se domníval, že to je z JQuery. JS neumím tak jenom používám hotové věci. Už jsem se dočetl, že to je něco jiného.
Dvě další reakce nechápu.
Když chci číslo zobrazit jako měnu, musí být tak zformátované. Když s ním ale chci dále pracovat a uložit ho, potřebuji, aby to bylo zase pouze číslo 2600000, protože potom následují další matematické výpočty.
Mě to nepřijde jako hloupé.
Řekl bych, že to sem patří, protože potřebuji odstranění přebytečných znaků udělat v php.
Zkoušel jsem to vykrájet pomocí SubStr což funguje, ale přijde mi to zbytečně složité a neřeší to otázku proč se to děje.
Díky
Alphard
Profil
Vhodné by bylo uložit si původní číslo (v normální číselné reprezentaci bez zvláštního formátování) někam stranou a dále pracovat s tímto. Formátovaná verze se použije pouze pro zobrazení uživateli.
juriad
Profil
Prefin:
Chamurappi chtěl naznačit, že formátování čísla závisí na uživateli, který stránku navštíví. Když tam přijde marťan, tak to číslo může být vypsané třeba ve třináctkové soustavě a pozpátku, protože tak se na Marzu čísla zapisují.

Jak radí Alphard, použij jiný input pro zobrazení hodnoty uživateli.
Pokud to máš jako input ve formuláři, nedávej mu name, nebude se odesílat. A vedle něj přidej nový <input type=hidden> se správným jménem, který je určený ke strojovému zpracování pozemským PHP.
Prefin
Profil
Aha, to mě nenapadlo, chyba.
Řešení s hidden je lepší - proč dělat něco, co se dělat nemusí.
Občas není špatné zjistit, že je člověk úplný id*ot.
Sorry za zbytečné vlákno
Joker
Profil
Prefin:
Sorry za zbytečné vlákno
Jestli vyřešilo problém, nebylo zbytečné ;-)
Chamurappi
Profil
Reaguji na Prefina:
Metoda toLocaleString() je součást JavaScriptu, není z žádného frameworku.
Minimálně Explorer do verze 10 včetně vrací jiný formát než nové prohlížeče, takže spoléhat na nějakou konkrétní reprezentaci opravdu není moudré. Ani pro účely zobrazování čísla uživateli bych ji nepoužíval. Chceš-li oddělit řády mezerami, převeď číslo na řetězec a použij tento replace s regulárem.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0