jQuery UI - Kalendář
Jak zprovoznit kalendář
Pro zprovoznění kalendáře na vašich stránkách potřebujete několik souborů. První je samotná knihovna jQuery, dále je potřeba základní soubor pro uživatelské rozhraní (jQueryUI.js) a ještě dva css soubory s designem. Důležité je pořadí souborů, jQUery knihovna musí být nad souborem jQueryUI.js. Výsledný kód pak může vypadat takto:
<link rel="stylesheet" href="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.8/themes/base/jquery-ui.css" type="text/css" media="all" /> <link rel="stylesheet" href="http://static.jquery.com/ui/css/demo-docs-theme/ui.theme.css" type="text/css" media="all" /> <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.min.js" type="text/javascript"></script> <script src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.8/jquery-ui.min.js" type="text/javascript"></script>
Že vše funguje si můžeme ověřit přidáním tohoto kódu:
// HTML část
<input type="text" id="datepicker">
// jQuery část
$(function() {
$( "#datepicker" ).datepicker();
});
Ukázku najdete zde
Co lze u kalendáře přizpůsobit
U kalendáře můžeme upravit formát data, počet zobrazovaných měsíců, jazyk, aktuální den a rok, zobrazení týdnů, animaci, vypsání data do jiného inputu a omezit data, která má uživatel na výběr.
Používané zkratky pro data
Pro různá nastavení používá kalendář tyto zkratky:
- mm - úplný měsíc, třeba "03"
- dd - úplný den, třeba "06"
- yy - úplný rok, třeba "2010"
- m - zkrácený měsíc, třeba "3"
- d - zkrácený měsíc, třeba "6"
- y - zkrácený rok, třeba "10"
- M - zkrácený název měsíce, třeba "Bře"
- D - zkrácený název dne, třeba "Pon"
- MM - úplný název měsíce, třeba "Březen"
- DD - úplný název dne, třeba "Pondělí"
Pokud budeme chtít používat vlastní text (třeba při změně formátu), dáme text do uvozovek, třeba "'Den' D 'Měsíc' M".
Změna formátu data
Základní formát data je mm/dd/rrrr (třeba 01/05/2011 - pátý leden roku 2011) a to nemusí všem vyhovovat. Naštestí to lze jednoduše změnit.
// HTML část
<input id="datepicker">
// jQuery část
$("#datepicker").datepicker({dateFormat: "mm-dd-yy"});
// nebo
$("#datepicker").datepicker({dateFormat: "yy-dd-mm"});
//nebo třeba
$("#datepicker").datepicker({dateFormat: "'Den' d 'v' MM 'v roce' yy"});
Ukázku najdete zde
Omezení výběru dat na určité období
Také můžeme ohraničit data, ze kterých může uživatel vybírat. Např. můžeme zabránit, aby vybíral data, která už uběhla.
// HTML část
<input id="datepicker">
// jQuery část
$("#datepicker").datepicker({ minDate: -20, maxDate: "+1M +10D" });
// uživatel může vybírat v období dvacet dnů před dneškem a ještě měsíc a deset dní po dnešku
$("#datepicker").datepicker({ minDate: 0});
// uživatel může vybírat data, která ještě nebyla
$("#datepicker").datepicker({maxDate: 0});
//uživatel může vybírat pouze data z minulosti
Ukázku najdete zde
Vypsání výbraného data do alternativního inputu
Pokud vám nestačí vypsání vybraného data do jednoho inputu, můžete ho vypsat do jiného a to dokonce v jiném formátu.
// HTML část
<input id="datepicker">
<input id="alternativni">
// jQuery část
$( "#datepicker" ).datepicker({
altField: "#alternativni", // selektor alternativního inputu
altFormat: "DD, d MM, yy" // formát alternativního data
});
Ukázku najdete zde
Trvalé zobrazení kalndáře
Jestli potřebujete kalendář zobrazovat pořád a nejen při kliknutí na input, můžete to udělat velmi jednoduše, stačí místo inputu vybrat div.
// HTML část
<div id="datepicker"></div>
// jQuery návod
$("#datepicker").datepicker();
Ukázku najdete zde
Zobrazení panelu s talčítky
Kalednář také obsahuje panel, ve kterém jsou tlačítka "Dnes" a "Hotovo". Zapnout ho můžeme takto:
// HTML část
<input id="datepicker">
// jQuery část
$("#datepicker").datepicker({
showButtonPanel: true
});
Ukázku najdete zde
Zobrazení selectu s roky a měsíci
Pokud je pravděpodobné, že uživatel bude vybírat datum několik let dopředu, můžeme mu to ulehčit zobrazením selectu s výběrem roků.
// HTML část
<input id="datepicker">
// jQuery část
$( "#datepicker" ).datepicker({
changeMonth: true, // výběr měsíců
changeYear: true // výbeř let
});
Ukázku najdete zde
Data z ostatních měsíců
V základním nastavení zobrazuje kalendář pouze data z aktuálního měsíce a vzniká tak prázdné místo na začátku a na konci měsíce. Místo prázdného místa můžeme zobrazit data z předcházejícího a následujícího měsíce.
// HTML část
<input id="datepicker">
// jQuery část
$("#datepicker").datepicker({
showOtherMonths: true,
selectOtherMonths: true
});
Ukázku najdete zde
Zobrazení čísla týdne
Další, co můžeme zobrazit, je číslo týdne.
// HTML část
<input id="datepicker">
// jQuery část
$("#datepicker").datepicker({
showWeek: true,
firstDay: 1 // první den je pondělí
});
Ukázku najdete zde
Výběr z více měsíců
Také můžeme zobrazit více měsíců najednou.
// HTML část
<input id="datepicker">
// jQuery část
$( "#datepicker" ).datepicker({
numberOfMonths: 3 // zobrazí 3 měsíce
});
Ukázku najdete zde
Animace
Při zobrazování kalendáře můžeme použí animaci.
// HTML část
<input id="datepicker">
// jQuery část
$( "#datepicker" ).datepicker({showAnim: "slideDown"});
Ukázku najdete zde
Rozmezí dat - od -> do
Třeba při výběru termínu dovolené je vhodné, aby uživatel použil dva inputy, jeden pro začátek dovolené a druhý pro konec.
// HTML část
Od <input id="from"> Do <input id="to">
// jQuery část
var dates = $( "#from, #to" ).datepicker({
defaultDate: "+1w",
changeMonth: true,
numberOfMonths: 3,
onSelect: function( selectedDate ) {
var option = this.id == "from" ? "minDate" : "maxDate",
instance = $( this ).data( "datepicker" );
date = $.datepicker.parseDate(
instance.settings.dateFormat ||
$.datepicker._defaults.dateFormat,
selectedDate, instance.settings );
dates.not( this ).datepicker( "option", option, date );
}
});
Ukázku najdete zde
Klávesové zkratky pro výber data
Kalendář lze ovládat pomocí klávesových zkratek.
- page up/down - předchozí/následující měsíc
- ctrl+page up/down - předchozí/následující rok
- ctrl+home - zobrazí aktuální měsíc nebo otevře kalendář, pokud je zavřený
- ctrl+left/right - předchozí/následující den
- ctrl+up/down - předchozí/následující týden
- enter - potvrdí vybrané datum
- ctrl+end - zavře a smaže datum
- escape - zavře kalendář bez uložení vybraného data
Utilitní funkce
Kalendář můžeme přizpůsobit ještě pomocí dalších funkcí.
- $.datepicker.setDefaults(nastavení) - pomocí této funkce můžeme určit výchozí nastavení pro všechny kalendáře
- $.datepicker.noWeekends - vypne všechny víkendy, nebudou vidět a uživatel je nebude moct vybrat
Zdroj:
Lokalizace do češtiny a slovenčtiny
Jak už jsem se zmínil výše, můžeme kalendář přeložit do češtiny.
// HTML část
<input id="datepicker">
// jQuery část
$.datepicker.regional['cs'] = {
closeText: 'Cerrar',
prevText: 'Předchozí',
nextText: 'Další',
currentText: 'Hoy',
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'],
weekHeader: 'Sm',
dateFormat: 'dd.mm.yy',
firstDay: 1,
isRTL: false,
showMonthAfterYear: false,
yearSuffix: ''};
$.datepicker.regional['sk'] = {
closeText: 'Zavrieť',
prevText: '<Predchádzajúci',
nextText: 'Nasledujúci>',
currentText: 'Dnes',
monthNames: ['Január','Február','Marec','Apríl','Máj','Jún',
'Júl','August','September','Október','November','December'],
monthNamesShort: ['Jan','Feb','Mar','Apr','Máj','Jún',
'Júl','Aug','Sep','Okt','Nov','Dec'],
dayNames: ['Nedel\'a','Pondelok','Utorok','Streda','Štvrtok','Piatok','Sobota'],
dayNamesShort: ['Ned','Pon','Uto','Str','Štv','Pia','Sob'],
dayNamesMin: ['Ne','Po','Ut','St','Št','Pia','So'],
weekHeader: 'Ty',
dateFormat: 'dd.mm.yy',
firstDay: 0,
isRTL: false,
showMonthAfterYear: false,
yearSuffix: ''};
$.datepicker.setDefaults($.datepicker.regional['cs']);
$("#datepicker").datepicker();
Ukázku najdete zde
(za lokalizaci do češtiny děkuji uživateli Pate)
http://jqueryui.com/demos/datepicker/