jQueryでフォームの入力フィールドを取得するには?

多くの入力フィールドを持つフォームがあります。

jQueryでsubmitフォームイベントをキャッチしたときに、そのフォームのすべての入力フィールドを連想配列で取得することは可能でしょうか?

ソリューション
$('#myForm').submit(function() {
    // get all the inputs into an array.
    var $inputs = $('#myForm :input');

    // not sure if you wanted this, but I thought I'd add it.
    // get an associative array of just the values.
    var values = {};
    $inputs.each(function() {
        values[this.name] = $(this).val();
    });

});

Simon_Weaver氏からの情報により、serializeArrayを使った別の方法を紹介します。

var values = {};
$.each($('#myForm').serializeArray(), function(i, field) {
    values[field.name] = field.value;
});

なお、このスニペットは <select multiple> 要素では失敗します。

jQueryバージョン1.3では、new HTML 5 form inputsserializeArray で動作しないようです。バージョン1.4+では動作します。

解説 (18)

| $('#myForm').bind('submit', function () {) var elements = this.elements; });

elements変数には、フォーム内のすべての入力、選択、テキストエリア、フィールドセットが格納されます。

解説 (0)

連想法?ちょっとした工夫が必要ですが、汎用セレクタを使うことができます。

var items = new Array();

$('#form_id:input').each(function (el) {
    items[el.name] = el;
});
解説 (3)