Rozpoznání tlačítka při odesílání formuláře
Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
- marau
- Člen | 50
Zdravím Netti,
narazil jsem na problém u kombinace Formulář vs Více tlačítek vs
Ajax.
V továrničce jsem si vytvořil formulář se 3mi tlačítky, na 2 z nich
jsem nalepil setValidationScope(FALSE)
(jedním se přepočítává
košík a druhým se filtrují metody dodání a platby). Hlavní tlačítko
odesílá objednávku.
Přepočítávání mám realizováno následovně (live při změně hodnoty inputu + prodleva 0,5s):
<script>
$('table tr td.count input').live('keyup', function(e) {
input = $(this);
id = $(this).attr('id');
value = input.attr('value');
if (jQuery.pf.input.changed(this) && parseInt(value) == value) {
input.stopTime('recount');
input.oneTime(500, 'recount', function() {
input.closest('table').find('input[name=recount]').ajaxSubmit(e, function(payload) {
jQuery.nette.success(payload);
$('#'+id).focus();
});
});
}
});
</script>
Hlavní problém je v tom, že při tomto způsobu odeslání není rozpoznáno. že byl formulář odeslán tlačítkem „recount“, netteForms.js mi to vyhodnotí jako odeslání formuláře a tlačítko to nerozpozná. Nevíte co s tím? Díky.
- marau
- Člen | 50
Oujeeee, díky moc. Nestálo by za to obohatit o ten jeden řádek ajaxSubmit? Co myslíte:
<script>
// submit button
if (this.is(":submit")) {
form = this.parents("form");
sendValues[this.attr("name")] = this.val() || "";
this.get(0).form["nette-submittedBy"] = this.get(0); //tohle přidat
// form
} else if (this.is("form")) {
form = this;
// invalid element, do nothing
} else {
return null;
}
</script>