Odeslání formuláře po změně SelectBoxu

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

Zdravím,

mám nette formulář, kde vytvářím selectbox (hodnoty mám zatím v latte), formulář si definuji celý v latte kvůli složitějšímu formátování (používám jen n:name pro bindování) a potřeboval bych tento formulář při změně hodnoty v selectboxu odeslat a tuto událost zachytit bejlépe pomocí testHistoryDbFormSucceeded

public function createComponentTestHistoryDbForm() {
    $form = new Form();
    $form->addProtection(); // Add "Reload form for safe submit, Form was expired."
    $form->addSelect('test_history_db');

    $form->onSuccess[] = array($this, "testHistoryDbFormSucceeded");
    return $form;
}
<form class="" role="" id="" action="" method="post" n:name="testHistoryDbForm">
    <div class="input-group">
        <span class="input-group-addon"><i class="fa fa-database"></i></span>
        <select n:name="test_history_db" class="form-control selectpicker show-tick" onchange="this.form.submit()">
            <option data-subtext="(PROD)">PROD</option>
            <option data-subtext="(TEST)">TEST</option>
        </select>
    </div>
</form>

Jedná se o přepínání DB kde nechci používat submit tlačítko pokud to nebude vyloženě nutné

Existuje nějaké jednoduché řešení ?

Editoval Joacim (2. 2. 2017 13:55)

johnnie
Člen | 54
+
+1
-

Nenapisal si kde mas problem, ale tipujem to ze nevidis tie <option> ktore si tam dal do selectu rucne vsak ?

vyskusaj tuto tovarnicku, neviem ci je to idealny sposob uplne ale ja to riesim takto

public function createComponentTestHistoryDbForm() {
    $database = [
        1 => \Nette\Utils\Html::el()->setText('PROD')->data('subtext', '(PROD)'),
        2 => \Nette\Utils\Html::el()->setText('TEST')->data('subtext', '(TEST)'),
    ];

    $form = new Form();
    $form->addProtection(); // Add "Reload form for safe submit, Form was expired."
    $form->addSelect('test_history_db', NULL, $database);

    $form->onSuccess[] = array($this, "testHistoryDbFormSucceeded");
    return $form;
}

Editoval johnnie (2. 2. 2017 15:09)

Joacim
Člen | 229
+
0
-

johnnie napsal(a):

Nenapisal si kde mas problem, ale tipujem to ze nevidis tie <option> ktore si tam dal do selectu rucne vsak ?

vyskusaj tuto tovarnicku, neviem ci je to idealny sposob uplne ale ja to riesim takto

public function createComponentTestHistoryDbForm() {
    $database = [
        1 => \Nette\Utils\Html::el()->setText('PROD')->data('subtext', '(PROD)'),
        2 => \Nette\Utils\Html::el()->setText('TEST')->data('subtext', '(TEST)'),
    ];

    $form = new Form();
    $form->addProtection(); // Add "Reload form for safe submit, Form was expired."
    $form->addSelect('test_history_db', NULL, $database);

    $form->onSuccess[] = array($this, "testHistoryDbFormSucceeded");
    return $form;
}

Díky moc funguje perfektně, stačilo přidat data :D

Editoval Joacim (3. 2. 2017 9:08)