У меня есть форма с двумя кнопками.Один для сохранения записи, а другой для отмены процедуры сохранения.Я использую 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>