jQuery - добавить дополнительные параметры при отправке (НЕ ajax) - PullRequest
195 голосов
/ 27 марта 2010

Использование jQuery 'submit' - есть ли способ передать дополнительные параметры в форму? Я НЕ собираюсь делать это с Ajax - это нормальная, типичная для обновления форма отправки.

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

Ответы [ 6 ]

349 голосов
/ 28 марта 2010

Этот сделал это для меня:

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

основан на ответе Даффа, но добавил атрибут NAME, чтобы он отображался в коллекции форм, и изменил VALUE на VAL Также проверил ID ФОРМЫ (form1 в моем случае)

использовал Firefox Firebug, чтобы проверить, был ли вставлен элемент.

Скрытые элементы отправляются обратно в коллекцию форм, отбрасываются только поля, доступные только для чтения.

Michel

25 голосов
/ 27 марта 2010

В вашем случае достаточно просто динамически добавить еще одно скрытое поле в форму.

var input = $("<input>").attr("type", "hidden").val("Bla");
$('#form').append($(input));
16 голосов
/ 11 сентября 2012

Вы даже можете использовать это. хорошо сработал для меня

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

это отправит btnsubmit = Сохранить как значение GET в форму register.php.

11 голосов
/ 26 марта 2013

Вы можете написать функцию jQuery, которая позволит вам добавлять скрытые поля в форму:

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

А затем добавьте скрытое поле перед отправкой:

var frm = $("#form").addHidden('SaveAndReturn', 'Save and Return')
                    .submit();
10 голосов
/ 27 марта 2010

Вам не нужно привязывать событие отправки по нажатию кнопки отправки, просто привязайте событие отправки, и оно будет захватывать событие отправки независимо от того, как оно запускается.

Подумайте, что вы хотите, чтобы отправить сортируемую, как вы бы через Ajax. Попробуйте сделать что-то вроде этого:

var form = $('#event').submit(function () {
    $.each($('#attendance').sortable('toArray'),function(i, value){
        $("<input>").attr({
            'type':'hidden',
            'name':'attendace['+i+']'
        }).val(value).appendTo(form);
    });
});
2 голосов
/ 15 сентября 2015

Аналогичный ответ, но я просто хотел сделать его доступным для простого / быстрого теста.

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>
...