На основании ответа karim79:
$("input[type=submit], input[type=button], button").click(function(e) {
var self= $(this),
form = self.closest(form),
tempElement = $("<input type='hidden'/>");
// clone the important parts of the button used to submit the form.
tempElement
.attr("name", this.name)
.val(self.val())
.appendTo(form);
// boom shakalaka!
form.submit();
// we don't want our temp element cluttering up the DOM, do we?
tempElement.remove();
// prevent default since we are already submitting the button's form.
e.preventDefault();
});
ОБНОВЛЕНИЕ:
Я только что понял, что приведенный выше код, вероятно, не то, что вы ищете:
ЕслиВы вызываете submit для самого элемента формы ($("form").submit();
), вам понадобится что-то вроде этого:
$("form").submit(function(){
var form = $(this);
$("input[type=submit], input[type=button], button", form).eq(0).each(function(){
var self= $(this),
tempElement = $("<input type='hidden'/>");
// clone the important parts of the button used to submit the form.
tempElement
.attr("name", this.name)
.val(self.val())
.appendTo(form);
});
});
, которое добавит имя и значение элемента first button к праву DOMперед отправкой формы (я не уверен, что поведение браузера по умолчанию здесь).Обратите внимание, что это не удаляет tempElement
из DOM.Если есть ошибка и форма не отправлена, элемент останется, и у вас будут проблемы, если вы не позаботитесь об этом.