Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailem Má smysl dělat <input type="date">?

Tak jsem byl děsně nadšen a použil jeden z nových inputů, o kterých jsem se dočetl u martina.developera a otestoval je na input-type-attr.html.
V editoru při náhledu se mi však zobrazoval jako normální textové pole (v IE náhledu i v gecko náhledu). Dal jsem to na web a tam to bylo OK, takže jsem se tím dál nezabýval.
Protože používám prohlížeč Opera a v ničem jiném jsem se na to na webu nedíval (a to byla chyba!), nevšiml jsem se, že se mi nezobrazuje kalendář s výběrem dne.
Naštěstí hned jedna z testujících vyplnila datum ve špatném tvaru a do databáze se uložilo 0000-00-00.
Jak se to zobrazuje vám (a v jakém prohlížeči)? Má vůbec cenu dělat věci, které případně nezvládají nejpoužívanější prohlížeče?
Testík jsem udělal na
input-date

Prohlížeč
[http://pc.poradna.net/file/view/6202-date-opera-gi  f]

Ostatní
[http://pc.poradna.net/file/view/6203-date-ff-gif]

Předmět Autor Datum
Zobrazí se mi obyčejný input. FF 3.6.17
host 16.06.2011 21:25
host
<input type="date"> Je součástí nedokončené specifikace HTML 5, tudíž by se na ně spoléhat nemělo -…
martin.developer 16.06.2011 21:33
martin.developer
No to s javascriptem asi budu muset někdy udělat. Bude to náhodou vkládat jiný člověk, než ten určen…
Kráťa 16.06.2011 22:04
Kráťa
Divné, já měl za to že FF4 tohle už ovládá. No každopádně validace a ošetření dat je nutnost v každ…
martin.developer 16.06.2011 22:17
martin.developer
Já měl úplně první myšlenku, udělat tam dva text vedle sebe. První s rokem a s value="2011", s tím,…
Kráťa 16.06.2011 22:41
Kráťa
Jak říkám buď tam nechej klasický textbox a v PHP (samozřejmě) validuj. Případně k tomu přilepit JS…
martin.developer 16.06.2011 22:46
martin.developer
Co se týče toho mého, dám tam pouze onu validaci a za nějaký čas bude FF umět i "date". Ale fakt o t… poslední
Kráťa 16.06.2011 22:53
Kráťa
<input type="date">

Je součástí nedokončené specifikace HTML 5, tudíž by se na ně spoléhat nemělo - tzn. na straně serveru (v PHP) validovat tvar toho data. A pokud chceš ten "vyskakovací kalendář" lze nahradit přes JavaScript.

Každopádně tyto věci už poslední verze prohlížečů podporují celkem použitelně.

Na lehkou validaci data ve formátu rok-měsíc-den stačí pár řádků ...

$date = "2009-12-31";
$dateParts = explode("-", $date, 3);

if( checkdate($dateParts[1], $dateParts[2], $dateParts[0]) )
{
	echo "Je to správné datum!";
}else{
	echo "Není to správné datum!";
}

Je i více možností, ale tohle je asi nejlehčí možnost.

No to s javascriptem asi budu muset někdy udělat. Bude to náhodou vkládat jiný člověk, než ten určený (a vycvičený) a je to hned. Avšak možná bude stačit i ona validace. Děkuji ti za ní.

Že mám starší Firefox mě napadlo hned. Dal jsem tedy zkontrolovat aktualizace a napsalo mi to, že novější verze, než mám já, je teprve ve výrobě :-)

[http://pc.poradna.net/file/view/6204-ff-aktualni-g if]

Škoda, že jsem to v něm nezkusil na té testovací stránce, ale právě v Opeře, která to umí a zobrazovala dobře. Jde o to, jestli takové podobné věci (kterých je v různých obdobích hafo), co je někdy budou běžně prohlížeče umět, vůbec dělat. Jestli není lepší, dělat pouze osvědčené (i když pracnější).

Divné, já měl za to že FF4 tohle už ovládá.

No každopádně validace a ošetření dat je nutnost v každém ohledu, když aplikace přebírá nějaké data od uživatele - to je základní pravidlo - nikdy nevěřit uživateli.

Další možností je udělat to přes tři selecty -

<select name="rok">

<option value="2012">2012 (konec světa, tak honem!)</option>
<option value="2011">2011</option>
<option value="2010">2010</option>
<option value="2009">2009</option>

</select>

<select name="mesic">

<option value="01">leden</option>
<!-- Nechce se mi je vypisovat všechny -->

</select>

<select name="den">

<option value="01">1</option>
<option value="02">2</option>
<!-- Nechce se mi je vypisovat všechny -->
</select>

A následně v PHP složit a zvalidovat -



if( checkdate($_POST['mesic'], $_POST['den'], $_POST['rok']) )
{
        $date = $_POST['rok'] . '-' . $_POST['mesic'] . '-' . $_POST['den']; //složit datum do správného formátu
	echo "Je to správné datum!";
}else{
	echo "Není to správné datum!";
}

Já měl úplně první myšlenku, udělat tam dva text vedle sebe. První s rokem a s value="2011", s tím, že bych to pak změnil a druhý textový na datum (15. 6.). Ale to by se blbě třídilo (ačkoli kdyby se to převedlo na xxxx-xx-xx). Nicméně tohle mé je fuk.
Tohle mé je pouze jedna z mnoha věcí, kdy něco nového nezavedeného zatím "není to pravé ořechové". :-)

Zpět do poradny Odpovědět na původní otázku Nahoru