J'ai cherché et trouvé plusieurs façons d'obtenir le bouton d' envoi name
+ value
envoyé au serveur en utilisant jQuery + AJAX. Je ne les aimais pas beaucoup ...
L'un des meilleurs était la solution du chasseur présentée ici!
Mais j'en ai écrit un autre moi-même.
Je veux partager, car c'est bon, et, comme j'avais besoin, cela fonctionne aussi avec les formulaires chargés via ajax (après document.ready):
$(document).on('click', 'form input[type=submit]', function(){
$('<input type="hidden" />').appendTo($(this).parents('form').first()).attr('name', $(this).attr('name')).attr('value', $(this).attr('value'));
});
Facile! Lorsque le bouton d'envoi est cliqué, un champ masqué est ajouté au formulaire, en utilisant le même name
et value
du bouton d'envoi.
EDIT: La version ci-dessous est plus facile à lire. De plus, il s'occupe de supprimer les champs cachés précédemment ajoutés (dans le cas de soumettre deux fois le même formulaire, ce qui est parfaitement possible en utilisant AJAX).
Code amélioré:
$(document).on('click', 'form input[type=submit]', function(){
var name = $(this).attr('name');
if (typeof name == 'undefined') return;
var value = $(this).attr('value');
var $form = $(this).parents('form').first();
var $input = $('<input type="hidden" class="temp-hidden" />').attr('name', name).attr('value', value);
$form.find('input.temp-hidden').remove();
$form.append($input);
});
formobj.submit()
. Je pense que les événements de clic sont la voie à suivre.