Я искал и нашел несколько способов получить кнопку отправки name
+ value
, отправленную на сервер с помощью jQuery + AJAX. Мне они не очень нравились ...
Одним из лучших было решение охотника, представленное здесь!
Но я сам написал еще один.
Я хочу поделиться, потому что это хорошо, и, как мне было нужно, оно работает также с формами, загруженными через ajax (после document.ready):
$(document).on('click', 'form input[type=submit]', function(){
$('<input type="hidden" />').appendTo($(this).parents('form').first()).attr('name', $(this).attr('name')).attr('value', $(this).attr('value'));
});
Simple! При нажатии кнопки отправки в форму добавляется скрытое поле, используя те же name
и value
кнопки отправки.
РЕДАКТИРОВАТЬ: Версия ниже легче читать. Кроме того, он заботится об удалении ранее добавленных скрытых полей (в случае отправки одной и той же формы дважды, что вполне возможно при использовании AJAX).
Улучшенный код:
$(document).on('click', 'form input[type=submit]', function(){
var name = $(this).attr('name');
if (typeof name == 'undefined') return;
var value = $(this).attr('value');
var $form = $(this).parents('form').first();
var $input = $('<input type="hidden" class="temp-hidden" />').attr('name', name).attr('value', value);
$form.find('input.temp-hidden').remove();
$form.append($input);
});