Обработка двух кнопок отправки с помощью evently
У меня есть форма с двумя кнопками отправки:
<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 ответ
Ну, так как он будет просто выполнять вызов 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
Таким образом, вы прикрепите событие отправки, а не событие клика.
обработчик отправки должен выглядеть так:
function() {
var form = $(this);
var doc = form.serializeObject();
// ...
}