Časové rozmezí, dodržení od – do (× do – od) a Form::RANGE

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
Tomáš Votruba
Moderator | 1114
+
0
-

Mám 2 inputy pro určení časového rozmezí aktivity v jednom dni a rád bych využil podmínku, aby nedošlo k tomu k prohození časů (tj. místo do 15:00 do 17:00 by byla aktivita od 17:00 do 15:00 – špatně).

Napadlo mne využít Form::RANGE, ale neúspěšně.

$form->addText('from', 'Od:');
$form->addText('till', 'Do:');

$form['from']->addRule(Form::RANGE, 'Začátek musí být dříve než konec.', array(0, $form['till']));

Nepoužívám špatné pravidlo? Jde to vůbec nějako? Díky.

enumag
Člen | 2118
+
0
-

Určitě to půjde vlastním validátorem (callback), v tom případě ale nefunguje JS validace – nevím jestli to vadí.

Nox
Člen | 378
+
0
-

No anebo si ji prostě dopíše ;)

llook
Člen | 407
+
0
-

Není lepší umožnit to v obou pořadích a pak je před použitím uspořádat funkcema min/max?

Grelek
Člen | 233
+
0
-

Napadlo mě, místo textového políčka použít selection pro hodiny (po 24) a minuty (po 60) a potom v nějaké proměnné spojit hodiny a minuty a porovnávat, jestli je od menší než do.
21:00 - 23:00 -> 2100 < 2300 – prošlo by
23:00 - 21:00 -> 2300 > 2100 – nepřošlo by

A nebo to nechat v tom textovém políčku a přes regulární výraz odstranit dvojtečku a začít porovnávat úplně stejně. Nejspíš je to špatné řešení, ale napadlo mě to takhle… =)

ic
Člen | 430
+
0
-

Ještě by se hodilo použít HTML5 input type range všechny aktuální prohlížeče, kromě FF to podporují a ty které ne zobrazí klasický input type text.
ukázka:
http://www.w3schools.com/html/tryit.asp?…