200 votes

jQuery - ajouter des paramètres supplémentaires lors de la soumission (PAS ajax)

Utilisation de la fonction "submit" de jQuery - existe-t-il un moyen de passer des paramètres supplémentaires à un formulaire ? Je ne cherche PAS à faire cela avec Ajax - il s'agit d'une soumission de formulaire normale, avec rafraîchissement.

$('#submit').click(function () {
    $('#event').submit(function () {
        data: { 
        form['attendees'] = $('#attendance').sortable('toArray').toString();
    });
});

357voto

Michel Points 5568

Celui-ci l'a fait pour moi :

var input = $("<input>")
               .attr("type", "hidden")
               .attr("name", "mydata").val("bla");
$('#form1').append(input);

est basé sur la réponse de Daff, mais a ajouté l'attribut NAME pour qu'il apparaisse dans la collection de formulaires et a changé VALUE en VAL J'ai également vérifié l'ID du FORM (form1 dans mon cas)

a utilisé le firebug de Firefox pour vérifier si l'élément a été inséré.

Les éléments cachés sont réaffichés dans la collection de formulaires, seuls les champs en lecture seule sont supprimés.

Michel

26voto

Daff Points 22358

Dans votre cas, il devrait suffire d'ajouter dynamiquement un autre champ caché à votre formulaire.

var input = $("<input>").attr("type", "hidden").val("Bla");
$('#form').append($(input));

17voto

Parag Points 1517

Vous pouvez même utiliser celui-ci, qui a bien fonctionné pour moi.

$("#registerform").attr("action", "register.php?btnsubmit=Save") 
$('#registerform').submit();

cela soumettra btnsubmit =Save comme valeur GET au formulaire register.php.

11voto

Jonathan Points 6934

Vous pourriez écrire une fonction jQuery qui vous permettrait d'ajouter des champs cachés à un formulaire :

// This must be applied to a form (or an object inside a form).
jQuery.fn.addHidden = function (name, value) {
    return this.each(function () {
        var input = $("<input>").attr("type", "hidden").attr("name", name).val(value);
        $(this).append($(input));
    });
};

Puis ajoutez le champ caché avant d'envoyer le formulaire :

var frm = $("#form").addHidden('SaveAndReturn', 'Save and Return')
                    .submit();

11voto

PetersenDidIt Points 17498

Il n'est pas nécessaire de lier l'événement submit au clic du bouton submit, il suffit de lier l'événement submit et il capturera l'événement submit quelle que soit la manière dont il est déclenché.

Je pense que ce que vous voulez, c'est soumettre le triable comme vous le feriez via ajax. Essayez de faire quelque chose comme ceci :

var form = $('#event').submit(function () {
    $.each($('#attendance').sortable('toArray'),function(i, value){
        $("<input>").attr({
            'type':'hidden',
            'name':'attendace['+i+']'
        }).val(value).appendTo(form);
    });
});

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X