Обработка двух кнопок отправки с помощью evently - PullRequest
1 голос
/ 31 октября 2011

У меня есть форма с двумя кнопками отправки:

<form>
  ...
  <input type="submit" name="update" value="Update"></input>
  <input type="submit" name="clean"  value="Clean"></input>
</form>

В зависимости от того, какую кнопку я нажимаю, я должен сделать две разные вещи. update добавит некоторые данные формы во внутренние структуры, а clean очистит форму и внутренние структуры.

Проблема в том, что я не могу перехватить эти два разных события с помощью Evently / jQuery. Я могу либо обработать событие формы / отправки, но я не получаю информации о том, какая кнопка была нажата (согласно документации jQuery «Значение кнопки отправки не сериализуется, поскольку форма не была отправлена ​​с помощью кнопки»).

Или я пытался перехватить события update / click и clean / click, но у меня не получилось структурировать дерево каталогов Evently, чтобы это перехватить. Это моя текущая структура, чтобы попытаться поймать эти события:

evently/filterconf/_init/
evently/filterconf/_init/selectors/form
evently/filterconf/_init/selectors/form/clean
evently/filterconf/_init/selectors/form/clean/click.js
evently/filterconf/_init/selectors/form/update
evently/filterconf/_init/selectors/form/update/click.js
evently/filterconf/_init/mustache.html

Но эти click.js не срабатывают. Есть идеи, как это решить? Или у вас есть предложение совершенно другого подхода для обработки этих двух кнопок отправки в Evently?

1 Ответ

0 голосов
/ 31 октября 2011

Что ж, поскольку он будет просто выполнять вызов ajax и фактически не будет отправлять всю форму с помощью POST, вам даже не нужны эти кнопки для отправки кнопок. Просто сделай:

  <button id="btn_update" value="Update"></button>
  <button id="btn_clean"  value="Clean"></button>

И структурируйте свои папки как:

evently/filterconf/_init
evently/filterconf/_init/selectors
evently/filterconf/_init/selectors/#btn_clean/
evently/filterconf/_init/selectors/#btn_clean/click.js
evently/filterconf/_init/selectors/#btn_update
evently/filterconf/_init/selectors/#btn_update/click.js

Или, с вашим подходом это будет что-то вроде:

/ filterconf равномерно в / _init / селекторы / форма / submit.js * +1009 *

Таким образом, вы прикрепите событие отправки, а не событие клика.

обработчик отправки должен выглядеть так:

  function() {
      var form = $(this);
      var doc = form.serializeObject();
      // ...
  }
...