Les contrôles désactivés ne soumettent pas leurs valeurs ce qui ne permet pas de savoir si l'utilisateur a cliqué sur enregistrer ou supprimer.
Je stocke donc la valeur du bouton dans un fichier caché qui est soumis. Le nom du caché est le même que celui du bouton. J'appelle tous mes boutons par le nom de button
.
Par exemple <button type="submit" name="button" value="save">Save</button>
Sur cette base, j'ai trouvé aquí . Il suffit de stocker le bouton cliqué dans une variable.
$(document).ready(function(){
var submitButton$;
$(document).on('click', ":submit", function (e)
{
// you may choose to remove disabled from all buttons first here.
submitButton$ = $(this);
});
$(document).on('submit', "form", function(e)
{
var form$ = $(this);
var hiddenButton$ = $('#button', form$);
if (IsNull(hiddenButton$))
{
// add the hidden to the form as needed
hiddenButton$ = $('<input>')
.attr({ type: 'hidden', id: 'button', name: 'button' })
.appendTo(form$);
}
hiddenButton$.attr('value', submitButton$.attr('value'));
submitButton$.attr("disabled", "disabled");
}
});
Voici mon IsNull
fonction. Utilisez ou substituez votre propre version pour IsNull ou undefined etc.
function IsNull(obj)
{
var is;
if (obj instanceof jQuery)
is = obj.length <= 0;
else
is = obj === null || typeof obj === 'undefined' || obj == "";
return is;
}