Autor Zpráva
Sislik
Profil
Chtěl jsem na stránce využít nových možností HTML5 ve formulářích v podobě
<input type="number" min="1" max="1000" step="0.1" />
. V Opeře funguje krásně, zobrazí se užitečné šipečky, prostě paráda. IE a FF to nepodporují, takže to interpretují jako
<input type="text">
, což považuju za OK, stejně to na straně serveru validuji. Ovšem jsem narazil na problém v Safari a Chrome

Pro snažší testování jsem použil TryIt Editor
jen jsem formulář modifikoval:
<input type="number" name="points" min="1" max="1000" step="0.1" />


na vstup: 458.9
prohlížeče reagují takto:
Opera: OK
Safari: neodešle
Chrome: neodešle
IE a FF všude odesílají jako text

vstup: 4.3
Opera: OK
Safari: OK
Chrome: OK

vstup: 40.1
Opera: OK
Safari: OK
Chrome: OK

vstup: 40.9
Opera: OK
Safari: neodešle
Chrome: neodešle

chvíli jsem Googlil a našel jsem, že pro Safari doporučují:
<input type="number" name="points" min="1" max="1000" step="any" /> 

a pak to začalo fungovat i v Safari, jenže v Opeře mi při klikání na šipečky čísla skáčí po celých jednotkách a ne po desetinných částech, čož se mi jednak líbí a přijde mi to užitečné a funguje to třeba i v Opera Mobile

takže má otázka zní, jestli jste se s tímto někdo už setkal a jak to vyřešit, aby to fungovalo i v Safari

děkuji
Amunak
Profil
Sislik:
Napadá mě, že problém je v prohlížečích v tom, že ty máš max=1000, ale zadáváš 458.9 - to je siceméně než tisíc, ale otázka je, jestli si to myslí i prohlížeč (podle mě ne). Pokud to bere jako 4589 tak je jasné, proč se to neodešle. Řešení je tedy používat kroky po jedné.

Ale jak na Safari, to bohužel neporadím.

Ale určitě by se dalo pro prohlížeče co to nepodporují generovat jiný kód, prostě jen type=text.
Sislik
Profil
diky, ale tím to nebude, Safari/Chrome nevezmou ani 40.9 (ale třeba 40.1 vezmou)

pokud nastavim kroky po 1, tak zase nezadam desetinný číslo, protože to by bylo menší než jeden krok (stejný, jako když se zadá krok 1000, tak nejde zadat číslo 12500, ale jen 12000 nebo 13000 - to funguje v Opeře a Safari/Chrome naprosto identicky), to je už lepší step="any", ale pak nebudou fungovat ty šipečky, jak jsem psal v prvním příspěvku

vtip je v tom, ze Safari/Chrome type="number" podporují, ale buď v tom mají chybu oni nebo já něco dělam špatně, možná jim to zadam do bugzilly a uvidíme, jestli to označí za chybu nebo za vlastnost :)

dát tam něco ve smyslu
IF (browser == "webkit") THEN ...
mě už taky napadlo, ale tomu se chci vyvarovat, protože prohlížeče, co type="number" nepodporujou, tak to interpretujou jako type="text" automaticky a tohle by bylo jenom pro Safari/Chrome
_es
Profil
Sislik:
Síce sa mi to nezdá, no nesúvisí to s problémom popísaným tu?
Číslo 0.1 sa v dátovom formáte double presne zapísať nedá.
Potom by napríklad kroky 0.25 0.5 0.75 a pod. mali fungovať bez problémov.
Sislik
Profil
to mě nenapadlo, to je hodně dobrá teorie, kterou důkladně prověřim
letmým testem tu teorii sice nabourává rychlej test, že 50.1 je v Safari akceptováno, ale 60.1 už neprojde
ale ještě prověřim, díky za tip
Amunak
Profil
Jinak pokud bys to chtěl mít hezké všude, nejlepší by asi bylo udělat to jako type text, možná jen readonly a ty šipečky si doskriptovat javascriptem a obrázkama.
Sislik
Profil
jj, jasný, ale ono to je aplikace pro mě a pár přátel, kde jsem si chtěl vyzkoušet nový fičurky z HTML5, který se mi sice moc líbí, ale zatim je to nepoužitelný, když to user-friendly funguje jenom v Opeře. Kdybych to chtěl prodávat, tak to nemůžu dovolit a takhle to samozřejmě nechat namůžu :) btw, readonly určitě ne, protože naklikávat si pomocí šipeček čísla v řadech stovek nebo tisíců by bylo docela šílený (pokud by se začínalo na 0 s krokem 1 (nebo 0.1))
jinak ten problém ve WebKitu jsem nakonec vyřešil tak, jak jsem nechtěl - jsem tam dal IF webkit THEN step="any", uvidíme, jak se to změní s dalšíma verzema WebKitu... (a IE a FF)

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

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

0