Сначала напишем плагин к jQuery для этого дела:
(function($) {
// эта штука применяется к форме
jQuery.fn.addHidden = function (name, value) {
return this.each(function () {
var input = {};
if (Object.prototype.toString.call(value) === '[object Array]') {
var r = /\[\]/;
// превращаем массив в серию отдельных скрытых полей
for (var i = 0; i < value.length; i++) {
input = $("<input type="text" />").attr("type", "hidden")
.attr("name", name.replace(r, '[' + i + ']'))
.val(value[i]);
$(this).append($(input));
}
} else {
input = $("<input type="text" />").attr("type", "hidden")
.attr("name", name)
.val(value);
$(this).append($(input));
}
});
};
})(jQuery);
Использую я его, например, когда нужно добавить в отправляемую форму все значения помеченных чекбоксов, которые находятся вне этой формы. Для этого возьмем метод map.
$("input[type='submit']").click(function(){
$("form").addHidden("selectedItems[]",$("input[name=\"selectedItems[]\"]:checked").map(function() {
return $(this).val();
}).get());
});