web-dev-qa-db-fra.com

jQuery - ajoute des paramètres supplémentaires lors de l'envoi (PAS ajax)

Utiliser 'submit' de jQuery - existe-t-il un moyen de transmettre des paramètres supplémentaires à un formulaire? Je ne cherche PAS à faire cela avec Ajax - il s'agit d'une soumission de formulaire typique, rafraîchie.

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

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 l'afficher dans la collection de formulaires et a remplacé VALUE par VAL. A également vérifié l'ID du FORM (formulaire1 dans mon cas)

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

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

Michel

351
Michel

Dans votre cas, il devrait suffire d'ajouter simplement un autre champ masqué à votre formulaire de manière dynamique.

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

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

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

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

16
Parag

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));
    });
};

Et puis ajoutez le champ caché avant de soumettre:

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

Vous n'avez pas besoin de lier l'événement de soumission en cliquant sur le bouton de soumission, mais de lier l'événement de soumission. Il capturera l'événement de soumission de la même manière que son déclenchement.

Pensez que ce que vous voulez, c'est soumettre le triable comme vous le feriez avec ajax. Essayez de faire quelque chose comme ça:

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

Réponse similaire, mais je voulais juste le rendre disponible pour un test facile/rapide.

var input = $("<input>")
               .attr("name", "mydata").val("go Rafa!");

$('#easy_test').append(input);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.6.3/jquery.min.js"></script>



<form id="easy_test">
  
</form>
2
Cacho Santa