web-dev-qa-db-ja.com

jQuery - 送信時にパラメータを追加する(ajaxではない)

JQueryの '送信'を使う - 追加のパラメータをフォームに渡す方法はありますか?私はAjaxでこれをするつもりはありません - これは普通の、リフレッシュ - 典型的なフォーム送信です。

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

これは私のためにそれをやった:

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

daffの答えに基づいていますが、フォームコレクションに表示させるためにNAME属性を追加し、VALUEをVALに変更しました。また、FORMのID(私の場合はform1)をチェックしました。

firefoxのfirebugを使って要素が挿入されたかどうかをチェックしました。

非表示要素はフォームコレクションにポストバックされ、読み取り専用フィールドのみが破棄されます。

ミシェル

347
Michel

あなたの場合は、フォームに別の隠しフィールドを動的に追加するだけで十分です。

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

あなたもこれを使うことができます。私のためにうまくいった

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

これにより、btnsubmit = SaveとしてGET値をregister.phpフォームに送信します。

16
Parag

あなたはフォームに隠しフィールドを追加することを可能にする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();
11
Jonathan

送信ボタンをクリックしたときに送信イベントをバインドする必要はありません。送信イベントをバインドするだけで、送信イベントはトリガーされます。

あなたが欲しいのはあなたがajaxを通してするように分類可能物を提出することであると考えなさい。このようなことをしてみてください。

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

同様の答えですが、私はそれを簡単で素早いテストに使えるようにしたかっただけです。

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