Autor Zpráva
fyzikalni.borec
Profil
Jak udělat to, že do pole imput půjdou zapstat jen čísla a tečky? Nerad bych tam ale vkládal zpětnou kontrolu.
Mnohokrát všem děkuji za odpověď.
Kajman
Profil
Atribut pattern pro formulářové prvky

Ale kontrola na straně serveru je potřeba vždy. A tag je input.
Keeehi
Profil
fyzikalni.borec:
Ještě lepší asi bude <input type="number">. To totiž na mobilech zobrazí tu číselnou klávesnici, která je pro zadávání číslic vhodnější. Jinak ale platí to, co napsal Kajman. Zpětná kontrola na serveru je potřeba vždy. Běžného uživatele by to zastavilo, ovšem nic co na stránce uděláš nemůže zastavit útočníka aby na server poslal požadavek s libovolným obsahem.
Kajman
Profil
Chtěl tečky, a number povolí jen jednu :-) Navíc s numberem a desetinnými čísly je u nás potíž, protože někdo chce psát tečku, někdo čárku a ne vždy se s prohlížečem shodnou, čím se čísla budou oddělovat, proto hlasuji pro pattern, co povolí oboje a server si to opraví.
Keeehi
Profil
Kajman:
Chtěl tečky, a number povolí jen jednu
Ano, pokud to chce třeba na zápis IPv4 adresy, pak určitě ano. Pokud má být vstupem číslo tak jsem rozhodně pro number. A problém desetinné tečky/čárky si myslím že zvládnou uživatelé vyřešit.
Kajman
Profil
Co si pamatuji, tak uživatelé, kterým operační systém ve virtuální klávesnici dal jiný znak, než který očekával prohlížeč, z toho nadšení nebyli. Od té doby dávám number raději jen pro celá čísla. A tuším ani u klasické klávesnice to nebylo ideální, kdy na numerické části šlo psát oddělovač jen pokud se jazyk klávesnice shodoval s rozhodnutím prohlížeče. Pro čtečky čárových kódů to může být také překážka (i když tam jsou většinou celá čísla).

Záleží na cílovce. Na mobilech bych tyto problémy neočekával.

Ale je to už pár let, třeba s tím už potíže nejsou časté ani na PC. A lze to předělat, až když budou uživatelé lamentovat :-)
fyzikalni.borec
Profil
Přiznám se, že sám nevím co si vybrat.
Abych byl konkrétnější, tak mi jde o kalkulačku.
Vzhledem k tomu, že návštěvníci mé stránky hodně využívají telefony, tak by bylo super, kdyby naskočila ta klávesnice jen s čísly. Vůbec mi nevadí, když někdo cíleně do té kalkulačky zadá něco jiného než čísla, protože jediný následek, který to bude mít, je špatný, nebo žádný výsledek. Jde mi tedy jen o to, aby bylo zadávání čísel co nejpohodlnější. Do kalkulačky se zadávají i desetinná čísla, problém ale je to, že systém chce tečku, ale fůra lidí zadává čárku. Bylo by tedy možné udělat to, aby naskočila číselná klávesnice, a když by lidé zadali čárku, tak by ji systém sám opravil na tečku? Způsobem, jak je udělaná ta "zpětná kontrola" v zaslaném odkaze o pattern mi vůbec nevadí. Moc díky všem.
Keeehi
Profil
fyzikalni.borec:
Bylo by tedy možné udělat to, aby naskočila číselná klávesnice, a když by lidé zadali čárku, tak by ji systém sám opravil na tečku?
Tak ta virtuální klávesnice zobrazuje už správný znak. Kajman sice píše, že to tak nebylo vždy ale neumím si moc představit, že by to výrobce prohlížeče pro ten daný operační systém nechtěl opravit.
Problém je spíše u uživatelů s hardwarovou klávesnicí. Ti mohou zmáčknout jakýkoli znak. Ale v tom případě jim snad dojde, že když píšou čárku a ta se stále neobjevuje, tak že by měli zkusit tečku.
Řešení by bylo navázat javascriptovou událost keypress na ten input a při detekci čárky nebo tečky se podívat na jeho hodnotu a případně tam chybějící znak doplnit. Ovšem obavám se, že jelikož formulářové prvky mají komplexní logiku, že by to nebylo tak lehké. Dalším "problémem" je, že vstup nemusí pocházet jen z klávesnice. To číslo tam může někdo nakopírovat a to je úplně jiná událost s jinou logikou. Takže vytvořit obslužný javascriptu, který bude ve všech případech správně fungovat, není nic triviálního.

Děláš nějakou speciální nebo obecnou kalkulačku?
Kajman
Profil
Inputy tam mohou být dva. Jednou text jednou number a zobrazovat number pro telefony, pokud je dokážete detekovat.

Dynamická změna typu inputu také nebývala bez problémů, proto raději oba a mít zobrazený jeden z nich.
Bubák
Profil
Co tak textový input, klávesnici podobnou, jaké má google kalkulačka a nečíselné znaky, co se dostanou do inpitu z klávesnice nebo ze schránky vymazat při onchange.
Ale udělat to tak, aby to dokázalo zpracovat korekrně při kopírování ze schránky všechny případy ze stránky cs.wikipedia.org/wiki/Oddělovač_řádů#Příklady bude obtížné a myslím, že to ani nebude potřebné.
Kajman
Profil
Koukám, že někdo používá i input pro telefonní číslo
<input type="tel" pattern="^[0-9]*[.,]?[0-9]*$">
jen ta desetinná tečka je třeba na mém telefonu na dvě kliknutí.
fyzikalni.borec
Profil
Jedná se o konkrétní kalkulačku, a telefony detekovat umím.
Jenže jsem si neuvědomil jeden zásadní problém. Do hodnoty, která je neznámá se zadává otazník. Otazník je nezbytně nutný pro další výpočty. V případě, že uživatel bude používat PC, tak to vyřeším jednoduše pomocí pattern, který jste mi poradili, a někde dopíšu drobnou poznámku, že se tam má vkládat tečka. Jenže co u telefonů? Je možnost nastavit tam nějakou klávesnici s otazníkem a tečkou? Nebo mě ještě napadlo udělat číselník s otazníkem přímo na stránce, jenže potom nevím, jak udělat jeden číselník k více inputům.
Keeehi
Profil
fyzikalni.borec:
V tom případě použij pattern a klávesnice neřeš.
fyzikalni.borec
Profil
Asi to tak budu muset udělat. Mnohokrát děkuji všem za rady. Kdyby ještě něco někoho napadlo, tak pište.

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

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

0