isSubmitedBy() nefunguje s prevencí vícenásobného odeslání formuláře
- pernica@tomp.eu
- Člen | 6
Ahoj.
Non Nette aplikace, používám Nette Forms. Mám formulář, který má 2 submit buttony:
$form->addSubmit('znamka', 'Hodnotit známkou');
$form->addSubmit('zapocet', 'Hodnotit zápočtem');
Který submit byl použit testuji takhle:
if ( $form['znamka']->isSubmittedBy() {}
if ( $form['zapocet']->isSubmittedBy() {}
Tímto javascriptem řeším vícenasobné odeslání. To funguje správně. Ale u formuláře, kde je více submit buttonů nepoznám, kterým byl odeslán.
// Prevent multiple submit
$("form").on("submit", function() {
$('input[type=submit]').disabled = true;
$('input[type=submit]').prop("disabled", "disabled");
$('input[type=submit]').val("Odesílám, čekejte...");
return true;
});
Takhle vypadá dump form:
Nette\Forms\Form
onSuccess: array (0)
onError: array (0)
onSubmit: array (0)
onRender: array
0 => 'makeBootstrap4'
httpRequest: Nette\Http\Request
crossOrigin: false
submittedBy: true
httpData: array
element: Nette\Utils\Html
attrs: array
children: array (0)
name: 'form'
isEmpty: false
renderer: unset
translator: null
groups: array (0)
errors: array (0)
beforeRenderCalled: false
onValidate: array (0)
currentGroup: null
validated: true
mappedType: null
components: array
cloning: null
parent: null
name: 'seminarka-hodnoceni-form'
monitors: array
'Nette\Forms\Form' => array
Když vypnu ten JavaScript, funguje správně, je tam tohle:
submittedBy: Nette\Forms\Controls\SubmitButton
onClick: array (0)
onInvalidClick: array (0)
validationScope: null
value: 'Hodnotit známkou'
control: Nette\Utils\Html
label: Nette\Utils\Html
disabled: false
caption: 'Hodnotit známkou'
errors: array (0)
omitted: true
rules: Nette\Forms\Rules
translator: true
options: array
parent: Nette\Forms\Form #97 RECURSION
name: 'znamka'
monitors: array
Může to JS takto ovlivňovat? Díky za rady.
Editoval pernica@tomp.eu (4. 9. 15:55)
- pernica@tomp.eu
- Člen | 6
Ahoj,
to mě nenapadlo. Díky!
Tohle to mělo na svědomí. Ten „prop“ funguje, také se disabluje, takže
to funguje dle potřeby.
$(‚input[type=submit]‘).disabled = true;