У меня есть форма, которая имеет две кнопки. Один для сохранения записи, а другой для отмены процедуры сохранения. Я использую rails.js
(обычный плагин AJAX/jQuery для тех из вас, кто не знает) javascript файл, который работает с jQuery для ненавязчивых вызовов javascript/ajax. Когда я отправляю данные формы через ajax, я хочу, чтобы имя и значение кнопки, на которую я нажал, были отправлены вместе с остальными данными, чтобы я мог принять решение о том, что делать, на основе того, какая кнопка была нажата.
Метод в файле rails.js
использует .serializeArray()
для отправки данных формы на сервер. Проблема в том, что это не включает пару имя/значение кнопки, которую я нажал. На веб-сайте jQuery говорится, что они делают это специально (хотя мое мнение, что они должны):
"Метод .serializeArray()
использует стандартные правила W3C для удаленных элементов управления, чтобы определить, какие элементы он должен включать, в частности элемент не может быть отключен и должен содержать атрибут имени. Значение кнопки отправки не сериализуется, поскольку форма не была отправлена с помощью кнопки."
Как они могут предположить, что форма не была отправлена с помощью кнопки? Полагаю, это не имеет смысла и ошибочного предположения.
В соответствии с правилами W3C кнопка, которая была активирована для отправки формы, считается успешным контролем.
Поскольку разработчики jQuery решили сделать это специально, могу ли я предположить, что существует другой метод, который НЕ НЕ исключает активированную кнопку в сериализации?
РЕДАКТИРОВАТЬ: Вот быстрый пример того, как будет выглядеть моя форма...
<!DOCTYPE html5>
<html>
<head>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.3/jquery.min.js" type="text/javascript"></script>
<script type="text/javascript">
$(document).ready(function() {
$('#form').submit(function(e) {
// put your breakpoint here to look at e
var x = 0;
});
});
</script>
</head>
<body>
<form id="form">
<input name="name" type="text"><br/>
<input name="commit" type="submit" value="Save"/>
<input name="commit" type="submit" value="Cancel"/>
</form>
</body>