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
+
0
-

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.

newPOPE
Člen | 648
+
0
-
<script>
  $('input[type=submit]', 'form').bind("click, keyup", function(e) {
    e.preventDefault();

    $t = $(this);

    switch($t.attr('id')) {
      case '...recount':

	break;

	case ...;
    }
  });
</script>

Z hlavy, ale nejak takto by som na to siel…

Foowie
Člen | 269
+
0
-

@marau: Taky už jsem to řešil

marau
Člen | 50
+
0
-

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>