O jQuery serializeArray não inclui o botão de envio que foi clicado
Eu tenho um formulário que tem dois botões. Um para salvar um registro e outro para cancelar o procedimento de salvamento. Estou usando orails.js
(um plug-in AJAX / jQuery comum para aqueles que você não conhece) arquivo javascript que funciona com o jQuery para chamadas javascript / ajax discretas. Quando envio os dados do formulário pelo ajax, desejo que o nome e o valor do botão em que eu cliquei sejam enviados com o restante dos dados, para que eu possa tomar uma decisão sobre o que fazer com base em qual botão foi clicado.
O método norails.js
arquivo usa.serializeArray()
para enviar dados do formulário para o servidor. O problema é que isso não inclui o par nome / valor do botão em que clicamos. O site da jQuery afirma que eles fazem isso de propósito (apesar de minha opinião de que deveriam):
"O.serializeArray()
O método usa as regras padrão do W3C paracontroles bem-sucedidos determinar quais elementos ele deve incluir; em particular, o elemento não pode ser desativado e deve conter um atributo de nome. Nenhum valor do botão de envio é serializado, pois o formulário não foi enviado usando um botão ".
Como eles podem supor que um formulário NÃO foi enviado usando um botão? Isso não faz sentido e uma suposição errada, acredito.
Sob as regras do W3C, o botão que foi ativado para o envio de um formulário é considerado umcontrole bem sucedido.
Como os desenvolvedores do jQuery decidiram fazer isso de propósito, posso assumir que existe outro método queNÃO FAZ excluir o botão ativado em uma serialização?
EDIT: Aqui está um exemplo rápido de como meu formulário pode ser ...
<!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>