[addon DateInput] DateInput – html 5 kompatibilní formulářové prvky pro výběr data

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
Hafran
Člen | 121
+
0
-

Zdar, moc pěkný doplňek, děkuji. ;)

Jde nějak nastavit defaultní hodnoty? Třeba aby implicitně bylo 9:00?

voda
Člen | 561
+
0
-

Ahoj, stejně jako u ostatních formulářových prvků:

$form->setDefaults(array(
	'date' => new \DateTime('2012-08-23 21:31:41')
));
yogiman321
Člen | 11
+
0
-

Ahoj, potvrdzujem, že tento addon funguje pre výber dátumu správne, ale ak v „time picker“ kliknem na tlačítko „teď/now/teraz“, tak do hidden inputu sa uloží iba dátum a čas zostane nastavený na 00:00:00.

Ak nastavím čas pomocou posuvníka(slider), tak do hidden inputu sa zapíše správne.

Použil som všetké najnovšie dostupné js súbory, nalinkoval ich v spravnom poradí, nastavil som si aj zobrazenie voľby pre sekundy. V podstate funguje pekne, len škoda toho „času“, lebo o ten mi ide najviac.

Neviete kde môže byť chyba?

motorcb
Člen | 552
+
0
-

Zdravím.
Snažím se doplněk zprovoznit v Nette 2.0.5 (čisté verzi, žédné složitosti) – https://github.com/…te-Dateinput

Ale je mi hlášen problém – Class ‚Nette\Forms\FormControl‘ not found

Rovněž nevím jak přesně udělat registraci doplňku v bootstrap.php

Koukněte do Gitu: https://github.com/…te-Dateinput

Děkuji za nakopnutí jak to zprovoznit

voda
Člen | 561
+
0
-

Ahoj, máš staženou špatnou verzi. Potřebuješ verzi pro Nette 2 (master větev).

motorcb
Člen | 552
+
0
-

@**voda**:

Díky za upozornění, nahrál jsem aktuální verzi.
Ale stále nefunguje. Tedy funguje pouze prvni prvek:

$form->addDate('date', 'Date', DateInput::TYPE_DATE);

Ostatní nefunguji:

$form->addDate('datetime', 'Datetime', DateInput::TYPE_DATETIME);
$form->addDate('datetimeLocal', 'Local datetime', DateInput::TYPE_DATETIME_LOCAL);
$form->addDate('month', 'Month', DateInput::TYPE_MONTH);
$form->addDate('week', 'Week', DateInput::TYPE_WEEK);
$form->addDate('time', 'Time', DateInput::TYPE_TIME);

Je u nich zobrazen pouze klasicky input ale neni mozne vybrat datum.
Cim by to mohlo byt?
https://github.com/…te-Dateinput

voda
Člen | 561
+
0
-

Nehlásí ti to nějakou chybu v javascriptu?

motorcb
Člen | 552
+
0
-

@**voda**:
Tak už to funguje. Nebyl nahrán jeden JS soubor.
Díky. Máš u mne pivo

Editoval motorcb (6. 10. 2012 9:26)

motorcb
Člen | 552
+
0
-

Chtěl bych volit i vteřiny. Jak na to?

    $('input[data-dateinput-type]').dateinput({
        datetime: {
            showSecond: true,
            dateFormat: 'd.m.yy',
            timeFormat: 'h:mm:ss',
            stepHour: 2,
            stepMinute: 10,
            stepSecond: 10
        },
...

Ani nefunguje volba po 2 hodinách (stepHour: 2), krok po minutách 10…

Komponenta zobrazuje následující datum: 12.10.2012 5:13:00 ale nemůžu vybrat vteřiny (neni k dispozici posuvnik pro vteriny [posuvnik pro hodiny a minuty vidim]).
Nevěděl by někdo jak na to?

Github: https://github.com/…te-Dateinput

Editoval motorcb (12. 10. 2012 17:16)

motorcb
Člen | 552
+
0
-

Chtěl bych nahlásit další bug:

Pokud kliknu na button „Nyní“ pro nastavení aktuálního datumu a času, tak se hodnota neodešle.
Pokud ale vyberu datum a čas ručně, jak se odešle zvolená hodnota.

Viz: https://github.com/…te-Dateinput

Prosím o prověření.
Děkuji

drakul
Člen | 37
+
0
-

Zdravím,
narazil jsem na zajímavý problém: DateInput při vymazání zadané hodnoty posílá hodnotu hidden inputu, tzn. nelze nahradit jednou vepsanou hodnotou za prázdnou. V současné době to tedy řeším tak, že mám za DateInput jeden checkbox, který když je zaškrtnutý tak se při poslání formuláře ignoruje hodnota z DateInput. Nenarazil někdo na podobný problém? Popř. jaký je best practise v tomhle případě? Děkuji

TomasHalasz
Bronze Partner | 79
+
0
-

Narazil jsem na podobné potíže jako ostatní dříve:

  1. pokud jsem použil DateInput::TYPE_DATETIME tak mi nešlo posuvníky měnit hodiny a čas. Dostával jsem chybovou hlášku, že neexistuje funkce formatTime konkrétně .timepicker._formatTime(tp,‚hh:mm:ss‘,.....

To jsem vyřešil tak, že jsem v dateInput.js opravil řádek 264:

var value = $.datepicker.formatDate('yy-mm-dd', selectedDate) + 'T' + $.timepicker._formatTime(tp, 'hh:mm:ss', false);

na tento:

var value = $.datepicker.formatDate('yy-mm-dd', selectedDate) + 'T' + $.datepicker.formatTime('HH:mm:ss', tp,  false);
  1. při zvolení datumu a času z datetimepickeru se do presenteru pro zpracování formuláře nepředala hodnota skrytého inputu s vybraným datumem a časem. To je dáno tím, že skrytý input neodpovídá původní definici formuláře. Prozatím jsem to vyřešil tak, že v presenteru hodnoty formuláře zpracovávám takto
$values = $form->getHttpData(TRUE);
unset($values['save']); //odstranit tlačítka z formu ať můžeme pole $values použít celé
unset($values['storno']);

Asi by to šlo i jinak, možná elegantněji/bezpečněji?

  1. pokud ručně upravím hodnotu v poli (tzn. bez použití datetimepickeru) nepřenese se tato hodnota do skrytého inputu a samozřejmě se neodešle do presenteru. Takže jsem v dateInput.js změnil přiřazení metody pro zpracování zvolených hodnot z onSelect na onClose a dále jsem upravil získávání datumu a času. Nyní místo selectedDate používám t.datepicker(‚getDate‘). Zde je nová metoda:
$.extend(pickerSettings, {
onClose: function() {
var tp = {
	hour: t.datepicker('getDate').getHours(),
	minute: t.datepicker('getDate').getMinutes(),
	second: t.datepicker('getDate').getSeconds()
};
var value = $.datepicker.formatDate('yy-mm-dd', t.datepicker('getDate')) + 'T' + $.datepicker.formatTime('HH:mm:ss', tp,  false);

if (type == 'datetime') {
	value += 'Z';
	}

alt.val(value);
}
});

Původní metodu onSelect jsem zatím zrušil.

Používám jquery-ui-1.9.2.custom.min.js, poslední jquery-ui-timepicker-addon.js z GitHubu.

Snad to co jsem zjistil někomu dalšímu pomůže :-)

voda
Člen | 561
+
0
-

Konečně jsem se dostal k aktualizaci doplňku. Je opraveno spoustu chyb, přidán composer, přidán odkaz na demo. Více info na stránce doplňku https://componette.org/search/?….

TomasHalasz

Díky za příspěvek, všechno by to mělo být v nové verzi funkční.

drakul
DateInput při vymazání zadané hodnoty posílá hodnotu hidden inputu

Opraveno v nové verzi.

motorcb
Pokud kliknu na button „Nyní“ pro nastavení aktuálního datumu a času, tak se hodnota neodešle.

V nové verzi by to mělo fungovat u všech typu inputů správně.

potty
Člen | 13
+
0
-

Dá se nějak nastavit výběr roku? Zkoušel jsem to pomocí changeYear: true, ale bez efektu.

voda
Člen | 561
+
0
-

V nastavení dateInputu to aktuálně nejde, ale můžeš to nastavit na vraceném objektu:

$('input[data-dateinput-type]').dateinput(settings)..datepicker('option', 'changeYear', true);

Když zadáš issue na githubu, tak přidám možnost to nastavovat přímo v nastavení dateInputu.

yank
Člen | 2
+
0
-

Ahoj.
Nedari sa mi zobrazit DateTime picker.
Hlasi to JS error:
Unhandled Error: ‚obj.prop‘ is not a function
niekde v tejto casti (jquery-ui-timepicker-addon aktualna verzia z Gitu):

<script>
return obj.prop('slide', null).slider({
						orientation: "horizontal",
						value: rtl? val*-1 : val,
						min: rtl? max*-1 : min,
						max: rtl? min*-1 : max,
						step: step,
						slide: function(event, ui) {
							tp_inst.control.value(tp_inst, $(this), unit, rtl? ui.value*-1:ui.value);
							tp_inst._onTimeChange();
						},
						stop: function(event, ui) {
							tp_inst._onSelectHandler();
						}
					});
</script>

Dalej pouzivam:
jquery-ui-1.8.9.custom.min (aj slider aj datepicker)
jquery-1.5.min
a dateInput pre nette 0.9.x

Poradie nacitania js je podla postu vyssie.
Dakujem za odpoved.

voda
Člen | 561
+
0
-

Aktualizuj se jquery a jquery-ui. jquery 1.5 je 2 roky stará verze.

duskohu
Člen | 778
+
0
-

Caute, neviete niekto v com mam problem, mam formular, a ked nastavim datum a dam odoslat a nasledne v inpute ten datum vymazem a dam zase odoslat, tak mi v tom inpute ten datum znovu zobrazi, aj ked si dumpnem values v metode ktora spracuje formular, tak miesto NULL tam mam ten datum. Nevie niekto v com je problem? mam nette 2.1 dev, pokial pouzijem input text tak je to ok, robi mi to len na dateInput.

	protected function createComponentForm()
	{
		$form = new Form();

		$form->addDate('date_from', 'Dátum od', DateInput::TYPE_DATE)
			->setAttribute("placeholder", "Dátum od");

		$form->addText('id', 'Id');

		$form->addSubmit('filter', 'Filter');

		$form->onSuccess[] = callback($this, 'filterSubmitted');

		return $form;
	}

	public function filterSubmitted(Form $form)
	{
		$values = $form->getValues();

	}
duskohu
Člen | 778
+
0
-

Prave som narazil este na jeden problem. Ked mas na stranke formular s dateInputom, a prebehne payload,
tak sa tento input zdupluje, ked je 1 urobi 2 ..4 ..

$this->presenter->payload->x = 10;
$this->presenter->sendPayload();
voda
Člen | 561
+
0
-

duskohu napsal(a):

Caute, neviete niekto v com mam problem, mam formular, a ked nastavim datum a dam odoslat a nasledne v inpute ten datum vymazem a dam zase odoslat, tak mi v tom inpute ten datum znovu zobrazi, aj ked si dumpnem values v metode ktora spracuje formular, tak miesto NULL tam mam ten datum. Nevie niekto v com je problem? mam nette 2.1 dev, pokial pouzijem input text tak je to ok, robi mi to len na dateInput.

Ahoj, teď jsem zkoušel verzi Nette 2.0 i 2.1 a v obou mi to funguje v pořádku. Jakou máš verzi jquery a jquery-ui? Nehlásí to nějakou javascriptovou chybu?

Prave som narazil este na jeden problem. Ked mas na stranke formular s dateInputom, a prebehne payload,
tak sa tento input zdupluje, ked je 1 urobi 2 ..4 ..

To záleží na tom, jak máš nastavenou inicializaci. Vydal jsem verzi 1.0.1, kde je toto ošetřené.

xxxmisko
Člen | 140
+
0
-

Ahoj!

Vedeli by ste mi poradiť, ako spraviť takú vec, napríklad checkin a checkout? Teda, že v prvom Date vyplním nejaký dátum a čas a v druhom bude defaultne zadaný ten istý dátum a čas bude napríklad +1hodina?

Ako by som to vedel v tomto doplnku spraviť? Pre prvý Date mu viem nastaviť default hodnoty, ale ako urobiť druhý Date zavislý na prvom? Ďakujem za každú radu.

xxxmisko
Člen | 140
+
0
-

ešte mám takú vec, je možné dostať addCondition a addConditionOn to nového dátumu? Ide o to, že dátum nemusí byť vyplnený a keď je vyplnený, aby mal nejaké addRule. Pretože ak nie je vyplnený a nie je required, formulár nie je validný.

Ďakujem

xxxmisko
Člen | 140
+
0
-

Keďže sa mi nedostáva odpoveď na moju otázku, mám pocit, že to asi nejde :(
Skúsim ďalšiu otázku. Nastavím addRule a Form::RANGE. Ako typ používam DateInput::TYPE_DATE. Ak dám range array(new Date(), new Date(‚+2 year‘)), vyberiem dnešný dátum, tak neprejde validáciou. Je to zrejme bug v doplnku.

Ciao

voda
Člen | 561
+
0
-

Ahoj,

xxxmisko napsal(a):

Vedeli by ste mi poradiť, ako spraviť takú vec, napríklad checkin a checkout? Teda, že v prvom Date vyplním nejaký dátum a čas a v druhom bude defaultne zadaný ten istý dátum a čas bude napríklad +1hodina?

Řeší se to stejně jako v samostatném datepickeru:

$('#frmtestForm-from').datepicker('option', 'onSelect', function(val, inst) {
	var date = $('#frmtestForm-from').datepicker("getDate");
	date.setDate(date.getDate() + 2);
	$('#frmtestForm-to').datepicker( "setDate", date);
});

ešte mám takú vec, je možné dostať addCondition a addConditionOn to nového dátumu? Ide o to, že dátum nemusí byť vyplnený a keď je vyplnený, aby mal nejaké addRule. Pretože ak nie je vyplnený a nie je required, formulár nie je validný.

Jednoduše asi ne, protože doplněk pracuje s DateTime objekty, s kterými formulářová validace moc nefunguje. Nejlépe ukaž konkrétní kód co potřebuješ a já se na to podívám.

Skúsim ďalšiu otázku. Nastavím addRule a Form::RANGE. Ako typ používam DateInput::TYPE_DATE. Ak dám range array(new Date(), new Date(‚+2 year‘)), vyberiem dnešný dátum, tak neprejde validáciou. Je to zrejme bug v doplnku.

Díky za bugreport, je to opraveno na master větvi.

xxxmisko
Člen | 140
+
0
-

Jednoduše asi ne, protože doplněk pracuje s DateTime objekty, s kterými formulářová validace moc nefunguje. Nejlépe ukaž konkrétní kód co potřebuješ a já se na to podívám.

Takáto obyčajná vec:

$form->addDate('datum_posledny', 'Dátum posledný', DateInput::TYPE_DATE)
		->addConditionOn($form['datum_posledny'], Form::FILLED)
			->addRule(Form::RANGE, null, array(new DateTime('+1 day'), new DateTime('+2 year')))
		->getControlPrototype()->readonly('readonly');

skrátka chcem, aby keď bude tá položka vyplnená, aby bola validovaná podľa nejakého pravidla.

Editoval xxxmisko (15. 5. 2013 14:56)

vvoody
Člen | 910
+
0
-

Nemá niekto potuchy čo sa mi tam rozbilo? Nic som neupgradoval, doteraz to šlo bez problému. Celkom ten exception nechápem.
Magic method App\AdminModule\Components\BaseUIForm::addDate() has not corresponding property $dates

nette 2.1 dev

edit: tak už som na to prišiel, dal som si do base formu @method anotacie pred triedu aby som mal nápovedu, vôbec nechápem čo sa pokúšal framework spraviť len na základe tých anotácií. Takže už mi to funguje len nemám nápovedu :(

edit2: takže ObjectMixin na základe anotácie @method addDate hľadá property $dates do ktorej chce vložiť parameter volanej metódy addDate. Kontrola existencie extension metod je až za kontrolou existencie anotácií @methods, takže si nemôžem oanotovať addNiečo metódy pridané cez extension method.

Editoval vvoody (23. 8. 2013 13:06)

voda
Člen | 561
+
0
-

Pokud máš vlastní BaseForm, tak si můžeš metodu addDate nakopírovat tam a zbytek metody DateInput::register přesunout do bootstrapu. Založil bych taky issue na Githubu.

Casper
Člen | 253
+
0
-

Zdravím,
pokud použiji Nette 2.1dev s validací Form::RANGE, Nette se pokouší volat Nette\Forms\Validator::validatedateInputRange() namísto DateInput::validatedateInputRange().

Použití:

$this->addDate('myDate', "Date", DateInput::TYPE_DATETIME)
     ->addRule(self::RANGE, '%label must be in future.', array(new DateTime(), NULL));

Bylo by možné přidat podporu pro tuto validaci i pro Nette 2.1dev? Hádám, že za to může tento commit.


Jako workaround lze použít tradiční callback + nastavit min a max:

$now = new DateTime();
$this->addDate('myDate', "Date", DateInput::TYPE_DATETIME)
     ->addRule("\Vodacek\Forms\Controls\DateInput::validateDateInputRange", '%label must be in future.', array($now, NULL));
     ->getControlPrototype()->min($now->format("Y-m-d\TH:i:se"));

Editoval Casper (24. 8. 2013 17:19)

michal.lohnisky
Člen | 64
+
0
-

Ahoj,

datetime picker mi zlobí: http://jsfiddle.net/KK5DL/1/ (používám FF 26.0) otevře se ihned po načtení stránky, a to i když to není první input ve stránce. Je to hodně nepříjemné, ale vyřešil jsem to tak, že jsem si stáhl kód z dema: http://date-input.vodacek.eu/script.js . Bohužel nedokážu říct, jaký je v kódech rozdíl.

Byl bych rád, když by někdo přišel té nepříjemnosti na kloub.

voda
Člen | 561
+
0
-

Ahoj, v ukázce na jsfiddle je pro input nastavená nějaká nesmyslná hodnota. Přímo takhle do vygenerovalo php? Zkoušel jsem to v FF24.2 a když nesmyslnou hodnotu opravím nebo odmažu, tak se to začne chovat správně.

Honza_S
Člen | 12
+
0
-

Ahoj,
zkouším použití DateInput ve filtru DataGridu a dochází tam k tomu, že DateInput posílá objekt DateTime což DataGrid nevezme. Dá se nějak nastavit DateInput aby odeslal jen string ? Nebo na to jdu úplně špatně? Díky

michal.lohnisky
Člen | 64
+
0
-

@Voda: ta hodnota se nastaví při

<?php
new DateTime('0000-00-00 00:00:00.000000');
?>

A tu hodnotu jsem měl v DB. Ale podle mě by to přesto nemělo mít takové chování. Asi špatná reakce při nepodařeném rozparsování data?

voda
Člen | 561
+
0
-

Honza_S napsal(a):

Ahoj,
zkouším použití DateInput ve filtru DataGridu a dochází tam k tomu, že DateInput posílá objekt DateTime což DataGrid nevezme. Dá se nějak nastavit DateInput aby odeslal jen string ? Nebo na to jdu úplně špatně? Díky

Ahoj, hlavní výhoda DateInputu je právě v tom, že vrací rovnou DateTime objekt. Lepší by bylo upravit DataGrid aby podporoval i objekty ve filtrech. Problém bude asi v Datagrid.php:464.

voda
Člen | 561
+
0
-

michal.lohnisky napsal(a):

@Voda: ta hodnota se nastaví při

<?php
new DateTime('0000-00-00 00:00:00.000000');
?>

Ahoj, hodnota 0000-00-00 00:00:00 není platné datum. Pokud chceš mít datum nevyplněné, měl bys mít v db null.

michal.lohnisky
Člen | 64
+
0
-

Jasně, chápu, ale to není moje DB. Stejně si myslím, že by to při chybě parsování nemělo ten picker otevírat. Nebo jo?

Honza_S
Člen | 12
+
0
-

@voda: OK díky, potvrdil jsi mou domněnku, že bude potřeba upravit DataGrid, ale tak silnej, abych si dokázal upravit to zpracování v Datagridu asi nejsem. Zkusím něco „vysedět“

voda
Člen | 561
+
0
-

@Honza_S

připravil jsem pro Datagrid pull request

Honza_S
Člen | 12
+
0
-

@voda: ale neřeší to další průběh, protože DataGrid.php:251 pak opět plní filtrační formulář

<?php
$this['form']['filter']->setDefaults($this->filter);
?>

a to už $this->filter neobsahuje objekt DateTime, ale jen array a to se pochopitelně DateInput.php:110 nelíbí – Invalid type for $value

edit: array_filter() tedy asi nezachová objekt

Editoval Honza_S (5. 2. 2014 19:27)

voda
Člen | 561
+
0
-

@Honza_S: Nikde tam nevidím, že by se objekt DateTime převáděl na nějakou jinou hodnotu. Nemáš tam ještě upravený kód?

Honza_S
Člen | 12
+
0
-

@voda: ne úpravu jsem smáznul a nahradil funkcí z pull reqestu.
Nenapadá mne nic jiného, než že se to ztrácí ve funkci array_filter() ← edit: blbost!
Laděnka hlásí na DataGrid.php:251 toto pole:

<?php
array (1) ▼
	datum_zalozeni => array (3) ▼
		date => "2014-01-25 00:00:00" (19)
		timezone_type => "3"
		timezone => "Europe/Prague" (13)
?>

Editoval Honza_S (5. 2. 2014 20:17)

Honza_S
Člen | 12
+
0
-

Tak byl někde spadlej řemen nebo nevím co … po hodině testování a dumpování na různých místech najednou jede jako fík.
Díky moc za trpělivost a pomoc

kralik
Člen | 230
+
0
-

Ahoj,
prosím věděli byste mi poradit.
Zkouším tuto skvělou komponentu. Vše maká super.
Ale trápím se při vykonání ajaxu.

Presenter

<?php
	...
	$form->addDate('zalozeno', 'Založeno', DateInput::TYPE_DATETIME)
		->setDefaultValue($now);
?>

V šabloně nadefinován přes js formát datumu.

Pokud se zobrazí formulář, u prvku „zalozeno“ se objeví aktuální datum: 16.4.2014 12:56
kliknu-li zobrazí se DataTimePicker.
Super.

Bohužel když vyberu ze SelectBoxu (DependentSelectBox), ale po provední invalidateControl snippetu (celý form) se mi hodnota datumu změní na: 2014–04–16T12:56:00Z

Nevíte jak zamezit změně formátu datumu při ajaxu?

Moc díky

voda
Člen | 561
+
0
-

Po načtení dat ajaxem musíš znovu spustit js ($('input[data-dateinput-type]').dateinput({...});).

kralik
Člen | 230
+
0
-

voda napsal(a):

Po načtení dat ajaxem musíš znovu spustit js ($('input[data-dateinput-type]').dateinput({...});).

super, díky
potřeboval jsem nakopnout.

Ještě jednou díky

ludek
Člen | 83
+
0
-

Zdravím. I když jedu podle návodu, dostávám pořád

Fatal Error: Class 'App\Presenters\DateInput' not found.

Asi je to nějak působeno použitím „namespace App\Presenters“; v novém sandboxu. Zkouším dát „use Vodacek\Forms\Controls;“, ale žádný úspěch.

namespace App\Presenters;

use App\Model,
	Nette,
	Nette\Application\UI\Form;

use Vodacek\Forms\Controls;

class HomepagePresenter extends BasePresenter {

protected function createComponentEditForm() {
        $form = new Nette\Application\UI\Form;
		//...
        $form->addDate('date', 'Date', DateInput::TYPE_DATE)->addRule(Form::VALID);
		//...
        return $form;
    }
}

Můžu prosit o radu? Dík.

Editoval ludek (9. 9. 2014 16:57)

iguana007
Člen | 970
+
0
-

Změn si to use na:

use Vodacek\Forms\Controls\DateInput;
ludek
Člen | 83
+
0
-

iguana007 napsal(a): Změn si to use na:

use Vodacek\Forms\Controls\DateInput;

To je ono. Díky moc.

ludek
Člen | 83
+
0
-

Ještě počeštění kalendáříku – do javascriptu doplnit:

options: { // global options
    closeText: "Zavřít",
    currentText:"Aktuální",
    prevText: 'Předchozí',
    nextText: 'Další',
    monthNames: ['Leden','Únor','Březen','Duben','Květen','Červen', 'Červenec','Srpen','Září','Říjen','Listopad','Prosinec'],
    monthNamesShort: ['Le','Ún','Bř','Du','Kv','Čn', 'Čc','Sr','Zá','Ří','Li','Pr'],
    dayNames: ['Neděle','Pondělí','Úterý','Středa','Čtvrtek','Pátek','Sobota'],
    dayNamesShort: ['Ne','Po','Út','St','Čt','Pá','So',],
    dayNamesMin: ['Ne','Po','Út','St','Čt','Pá','So']
}
Azathoth
Člen | 495
+
0
-

Ahoj, zkouším rozchodit tenhle addon a mám menší problém s javascriptem. Při kliknutí položky ve formuláři se mi nezobrazí ten kalendář.

V bootstrap.php jsem zaregistroval addon:

<?php
Vodacek\Forms\Controls\DateInput::register();             //registrace voda/dateInut addonu

$container = $configurator->createContainer();

return $container;
?>

Ve formafactory mám zkopírovány zdrojáky z http://date-input.vodacek.eu/

<?php
$form = $this->baseFormFactory->create(); //tady si injectuji do formuláře translator
$form->addDate('date', 'Date', DateInput::TYPE_DATE)
		->addRule(Form::VALID);
$form->addDate('datetime', 'Datetime', DateInput::TYPE_DATETIME)
		->setDefaultValue(new DateTime())
		->addRule(Form::RANGE, null, array(new DateTime('-1 month'), new DateTime('+1 month')));
$form->addDate('datetimeLocal', 'Local datetime', DateInput::TYPE_DATETIME_LOCAL)
		->setDefaultValue(new DateTime())
		->addRule(Form::RANGE, null, array(new DateTime('-2 years'), new DateTime('+2 years')));
$form->addDate('month', 'Month', DateInput::TYPE_MONTH);
$form->addDate('week', 'Week', DateInput::TYPE_WEEK)
		->setDefaultValue(new DateTime())
		->addRule(Form::RANGE, null, array(new DateTime('-1 year'), new DateTime('+6 months')));
$form->addDate('time', 'Time', DateInput::TYPE_TIME)
		->setDefaultValue(new DateTime('noon'));
$form->addSubmit('send', $form->getTranslator()->translate('forms.add_course.button'));
return $form;
?>

V @layout.latte mám

{block scripts}
<script src=„{$basePath}/js/jquery.min.js“></script>
<script src=„{$basePath}/js/netteForms.js“></script>
<script src=„{$basePath}/js/main.js“></script>

<script type=„text/javascript“ src=„http://maps.googleapis.com/maps/api/js?libraries=places&sensor=false“></script> {*kvůli google maps addonům*}
<script src=„{$basePath}/js/nette.gpsPicker.js“></script> {*z vojtech-dobes/nette-forms-gpspicker*}

<script type=‚text/javascript‘ src=„{$basePath}/jquery-ui/jquery-ui.min.js“></script> {*kvůli voda/dateInput addonu*}
<script type=‚text/javascript‘ src=„{$basePath}/jquery-ui/jquery-ui-timepicker-addon.js“></script> {*kvůli voda/dateInput addonu*}
<script type=‚text/javascript‘ src=„{$basePath}/js/dateInput.js“></script> {*z voda/date-input*}
<link rel=„stylesheet“ type=„text/css“ href=„{$basePath}/jquery-ui/jquery-ui.min.css“> {*kvůli voda/dateInput addonu*}
<link rel=„stylesheet“ type=„text/css“ href=„{$basePath}/jquery-ui/jquery-ui-timepicker-addon.css“> {*kvůli voda/dateInput addonu*}
<link rel=„stylesheet“ type=„text/css“ href=„{$basePath}/css/dateInput.css“> {*z voda/date-input*}
{/block}

a v latte souboru, který vykresluje formulář, mám:
{block content}
{control addCourseForm}
<script> {*inicializace voda date input kalendáře*}
$(document).ready(function() {
$(‚input[data-dateinput-type]‘).dateinput({
datetime: {
dateFormat: ‚d.m.yy‘,
timeFormat: ‚H:mm‘,
options: { // options for type=datetime
changeYear: true
}
},
‚datetime-local‘: {
dateFormat: ‚d.m.yy‘,
timeFormat: ‚H:mm‘
},
date: {
dateFormat: ‚d.m.yy‘
},
month: {
dateFormat: ‚MM yy‘
},
week: {
dateFormat: „w. ‚week of‘ yy“
},
time: {
timeFormat: ‚H:mm‘
},
options: { // global options
closeText: „Close“
}
});
});
</script>
{/block}
a bohužel mi to nefunguje a kalendář se nezobrazuje.
Verze:
jquery: 2.1.1
jquery-ui: 1.11.1
jquery-ui-timepicker addon: 1.5.0

Editoval Azathoth (15. 9. 2014 15:21)

voda
Člen | 561
+
0
-

S verzemi, které jsi uvedl mi to funguje. Nehlásí prohlížeč nějaké chyby do konzole?