Ignorovani onClick handleru po odeslani formulare
- Jan Mikeš
- Člen | 771
Ahoj, testuji to na takto jednoduchem formulari:
protected function createComponentTestForm()
{
$form = new \Nette\Application\UI\Form;
$form->addSubmit("test")->onClick[] = function ($btn) {
$stop();
};
$form->onSuccess[] = function($form, $values) {
$stop();
};
return $form;
Po odeslani formulare se kompletne ignoruje callback onClick
,
v pripade ze zakomentuji onSuccess handler, provede se http pozadavek a stranka
se znovu nacte. Pokud odkomentuji, debugger me stopne na onSuccess
callbacku.
Uz do toho nejakou dobu ziram, a opravdu netusim kde muze byt chyba.
ve Form::fireEvents()
je submittedBy TRUE, namisto aby to byla
instance ISubmitterControl
, vypada to, ze formular nepozna, ze je
odeslan tim tlacitkem.
Formular vykresluji pres {control}
macro
Editoval Lexi (24. 1. 2016 22:33)
- Jan Mikeš
- Člen | 771
Ve vypisu httpData, dokonce i v $_POST
to tlacitko
uplne chybi:
array (1) [
do => "testForm-submit"
]
Edit: dalsi wtf faktor, pokud ten stejny formular odeslu ajaxem vse je v poradku (nette.ajax.js), zrusim class ajax na formu a opet nefunguje
Editoval Lexi (24. 1. 2016 23:54)
- Jan Mikeš
- Člen | 771
OMG, po 3 hodinach hledani chyby v PHP, jsem si uvedomil, ze disabluju submit button po odeslani formulare:
<script>
$('form').preventDoubleSubmission();
jQuery.fn.preventDoubleSubmission = function() {
$(this).on('submit',function(e){
var $form = $(this);
if (Nette.validateForm(this)) {
if ($form.data('submitted') === true) {
e.preventDefault();
} else {
$form.data('submitted', true);
$form.find("input[type='submit']").addClass("disabled"); // .attr('disabled','disabled');
// Po nepridavani atributu disabled opet funguje..
}
}
});
return this;
};
</script>
Kdyby nahodou nekdo mel podobny problem tak snad mu to usetri cas :-)
Editoval Lexi (25. 1. 2016 7:59)