Předvyplnění na základě kliknutí na button

MikKuba
Člen | 75
+
0
-

Ahoj,

chtěl bych vylepšit stávají funkční formulář o sadu buttonů, které po kliknutí způsobí bez refreshe předvyplnění určitých hodnot do multiselectu.

Multiselect obsahuje dejme tomu 150 různých možných hodnot, z toho jich je vždy třeba 10 svázano v databázi společným kódem (např. „typ1“), tlačítko s value=„typ1“ by po kliknutí do multiselectu přidalo najednou všech 10 prvků, které mají typ1..

Problém ale je, že jsem na nic kloudného nepřišel, resp. aby to nebyla nějaká prasárna. Neexistuje pro tento případ nějaké udělátko, případně nemáte někdo s podobným problémem zkušenost, o kterou byste se, prosím, podělili? :)

Předem díky :)

Barbarossa
Člen | 74
+
0
-

Inspiruj se třeba zde: https://blog.nette.org/…-and-pure-js

Alsatian
Člen | 163
+
0
-

Nevím, možná složitě, ale i takto je to možné za pomocí jQuery.

Do formuláře přidáš tlačítko, třeba s názvem „skupinka“ (addButton)

$form->addMultiSelect('multiselect', 'Moje skupinka', ['jablko', 'hruška', 'pomeranč', 'mrkev']);
$form->addButton('skupinka', 'Skupinka');

jQuery (někam do JavaScriptu). Pro označení více hodnot najednou použiješ první řádek,
pro označení konkrétního řádku (pojmenované pracovně 0, 1, 2, 3..) zakomentovaný řádek. Dá se použít i pro případné odznačení, místo true se použije false (prop).

$(document).on('click', 'input[name=skupinka]', function() {
    $("select[name='multiselect[]']").val([0, 1]);
    //$("select[name='multiselect[]'] option[value=1]").prop('selected', true); // NEBO
});