Сначала напишем плагин к 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()); });