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>