Я использую некоторые формы из приложения PHP, которое я не писал. Для этого я придумал это умное решение:
jQuery("form").submit(function(event) {
// get some values from elements on the page:
var the_form = jQuery(this);
var data = the_form.serialize();
var url = the_form.attr( 'action' );
var button = event.originalEvent.explicitOriginalTarget;
data = data + "&" + button.name + "=" + button.value;
// Send the data using post and put the results in a div
jQuery.post( url, data, function() {
//Do something crazy
});
// stop form from submitting normally
if (event.preventDefault)
{
event.preventDefault();
}
else
{
event.returnValue = false;
}
});
Что работает отлично. Я ушел от радости. Проблема в том, что я случайно использовал свойство Mozilla/Gecko, чтобы определить, какая кнопка была нажата. (event.originalEvent.explicitOriginalTarget
) Это означает, что это работает только в Firefox.:-(
Все это необходимо, потому что веб-приложение, которое я увеличиваю, полагается на имя/значение кнопки, находящееся в данных сообщения, чтобы правильно обработать форму. Итак, мой вопрос простыми словами:
Какой лучший, кросс-браузерный способ определить, какая кнопка была нажата в jQuery submit?
Edit: И вот мое решение.
jQuery("some selector that targets your form").find(":submit").click(function(event) {
// get some values from elements on the page:
var the_form = jQuery(this).parents("form");
var data = the_form.serialize();
var url = the_form.attr( 'action' );
var button = event.target;
data = data + "&" + button.name + "=" + button.value;
// Send the data using post and put the results in a div
jQuery.post( url, data, function() {
//Do something crazy
});
// stop form from submitting normally
if (event.preventDefault)
{
event.preventDefault();
}
else
{
event.returnValue = false;
}
});