wake-up-neo.com

jQuery - zusätzliche Parameter beim Senden hinzufügen (NICHT Ajax)

Mit jQueries 'submit' - gibt es eine Möglichkeit, zusätzliche Parameter an ein Formular zu übergeben? Ich möchte dies NICHT mit Ajax tun - dies ist eine normale, aktualisierungstypische Formularübermittlung.

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

Dieser hat es für mich getan:

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

basiert auf der Antwort von Daff, hat aber das NAME-Attribut hinzugefügt, damit es in der Formularsammlung angezeigt wird, und hat VALUE in VAL geändert. Überprüfen Sie auch die ID des FORMULARS (in meinem Fall form1).

hat mit dem Firefox-Firebug überprüft, ob das Element eingefügt wurde.

Versteckte Elemente werden wieder in die Formularsammlung aufgenommen, nur schreibgeschützte Felder werden verworfen.

Michel

351
Michel

In Ihrem Fall sollte es ausreichen, Ihrem Formular dynamisch ein weiteres verstecktes Feld hinzuzufügen.

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

Sie können dieses sogar benutzen. funktionierte gut für mich

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

dies wird btnsubmit = Save as GET value ins register.php Formular senden.

16
Parag

Sie können eine jQuery-Funktion schreiben, mit der Sie einem Formular ausgeblendete Felder hinzufügen können:

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

Fügen Sie dann das ausgeblendete Feld hinzu, bevor Sie senden:

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

Sie müssen das Sendeereignis nicht binden, wenn Sie auf die Schaltfläche "Senden" klicken. Binden Sie einfach das Sendeereignis, und es erfasst das Sendeereignis, unabhängig davon, wie es ausgelöst wird.

Überlegen Sie, was Sie wollen, ist, die sortierbare Datei wie bei Ajax einzureichen. Versuche so etwas zu machen:

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

Ähnliche Antwort, aber ich wollte es nur für einen einfachen/schnellen Test zur Verfügung stellen.

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