Multiselectbox – přidání možnosti „všechny firmy“
- Nevinho
- Člen | 77
php 5.3|nette 2.0.6
Zdarec, mám takový problém, do multiselectboxu si načtu nazvy firem z databáze, a potřeboval bych přidat možnost „vybrat vše“.
formulář mám řešený takhle:
<?php
protected function createComponentFiltrForm()
{
$firmaPairs = $this->firmy->findAll()->fetchPairs('ID', 'nazev_firmy');
$form = new appForm();
$form->addGroup('Firmy:');
$form->addMultiSelect('firmy', 'Firmy:', $firmaPairs);
$form->addGroup('Typ dat:');
$items = array(1 => 'Finanční ukazatele', 2 => 'Výrobní informace', 3 => 'Fakturační informace', 4 => 'Osoby', 5 => 'Vztahy', 6 => 'Adresy',7 => 'Kontakty', 8 => 'Aktivity');
$form->addCheckboxList('data', '', $items);
$form->setDefaults(array('data' => array(1))); // defaultně budou nastaveny finanční informace
$form->addSubmit('show', 'Zobrazit');
return $form;
}
Díky za radu
?>
Editoval Nevinho (15. 11. 2012 23:33)
- Jirda
- Člen | 103
Nevinho napsal(a):
php 5.3|nette 2.0.6
Zdarec, mám takový problém, do multiselectboxu si načtu nazvy firem z databáze, a potřeboval bych přidat možnost „vybrat vše“.
formulář mám řešený takhle:
<?php protected function createComponentFiltrForm() { $firmaPairs = $this->firmy->findAll()->fetchPairs('ID', 'nazev_firmy'); $form = new appForm(); $form->addGroup('Firmy:'); $form->addMultiSelect('firmy', 'Firmy:', $firmaPairs); $form->addGroup('Typ dat:'); $items = array(1 => 'Finanční ukazatele', 2 => 'Výrobní informace', 3 => 'Fakturační informace', 4 => 'Osoby', 5 => 'Vztahy', 6 => 'Adresy',7 => 'Kontakty', 8 => 'Aktivity'); $form->addCheckboxList('data', '', $items); $form->setDefaults(array('data' => array(1))); // defaultně budou nastaveny finanční informace $form->addSubmit('show', 'Zobrazit'); return $form; } Díky za radu ?>
Jak jako vybrat vse?
Paklize to myslis tak, ze primo ve vyberu selectboxu budes mit vybrat vse, tak treba teto moznosti prirad id = 0 a kdyz uzivatel vybere jen tuto moznost, tak vis, ze vybral vse a podle toho zaridis dalsi logiku.
Nebo pokud chces mit vybrat vse nekde vedle toho selectboxu, tak si uprav vzhled formulare, nejak pekne tam zakomponuj button a dej mu javascript funkcionalitu takovou, ze vybere vsechny polozky. (kod snad neni treba, to ti prozradi i google, neni to nic sloziteho).
- enumag
- Člen | 2118
Tak ten checkbox list se dá nastylovat tak aby byl přes více sloupců…
Multiselect je dle mého názoru špatný, protože jej BFU neumí používat – neví, že může vybrat více možností pomocí Ctrl. A navíc ještě nutné scrollování, plus nikdy nevidíš co všechno máš vybrané – děkuji nechci. Pro mé potřeby je multiselect zkrátka příliš user-unfriendly. ;-)
- Hafran
- Člen | 121
Tady je nástřel toho JS, koukni se na stránky JQuery.com budeš chytřejší :)
Tohle by ti mělo zaškrtnout všechny checkboxy s třídou myCheckboxes po kliknutí na checkbox třídy mySpecialCheckbox. Je to z hlavy a nejsem žádnej JS guru, ale když si to někde ještě dohledáš a poladíš, tak bys to moh rozchodit. Musíš to mít samozřejmě ve www a naincludovaný do layoutu a musíš mít nainkludovanou Jquery, ta je tam asi implicitně.
<script type="text/javascript">
$(document).ready(function() {
$('.mySpecialCheckbox').click(function(){
$(".myCheckboxes").each( function() {
$(this).attr("checked",'checked');
})
});
});
</script>