Вот как я это решил.Меня вдохновили некоторые ответы, опубликованные выше, но мне нужен подход, который бы работал для всех моих форм, поскольку я загружал их динамически.
Я заметил, что ajaxSubmit имеет опцию data
, которая описывается плагиномвыполняет следующие действия:
Объект, содержащий дополнительные данные, которые должны быть отправлены вместе с формой.
Это именно то, что нам нужно.
ИтакЯ прикрепил обработчик нажатия к кнопкам отправки и сохранил элемент с помощью jQuery (я предпочитаю этот метод, чем добавление поддельного атрибута):
$('[type="submit"]').live('click', function(e){
jQuery.data( $(this).parents('form')[0], 'submitTrigger', $(this).attr('name'));
});
А затем в своем вызове ajaxSubmit я построил объект данных и отправил егокак это:
function dialogFormSubmit( form ) {
var data = {}
data[jQuery.data( form, 'submitTrigger')] = true;
$(form).ajaxSubmit({
data: data
});
return false;
}
Я построил объект данных таким образом, потому что я хотел, чтобы он вел себя так же, как если бы я представил его с ванильным HTML / PHP (имя ввода является ключом вМассив $ _POST).Я полагаю, если бы я хотел остаться верным ее реальному поведению, я бы добавил значение или innerHTML кнопки отправки, но я обычно просто проверяю, установлено ли оно, чтобы оно было ненужным:).