在html表单提交上发布有序列表内容的最佳方法是什么?

时间:2010-09-26 12:27:53

标签: jquery html forms dom sinatra

过去我总是使用一个隐藏字段,在onClick事件的提交按钮上,我使用自定义代码将列表内容(li元素的文本)填充到隐藏的表单字段中,并在服务器上解析它 - 使用自定义代码。

这总是感觉像是一个黑客,我想知道是否有更现代的方法。我想找到最通用的方法,但如果工具很重要,我在客户端上使用JQuery,在服务器上使用Ruby / Sinatra。也许将列表转换为JSON对象,然后在服务器端使用?

2 个答案:

答案 0 :(得分:1)

如果您想作为以逗号分隔的值

var values = $.map($('ol li'), function(e,i) { 
  return $(e).html();
});
$('form').append('<input type="hidden" name="field" value="' + 
   values.join(',') + '"/>');

或者你可以把它作为一个数组

var inputs = $.map($('ol li'), function(e,i) { 
  return '<input name="field[]" value="' + $(e).html() + '"/>';
});
$('form').append(inputs.join(" "));

答案 1 :(得分:0)

目前尚不清楚您要传递的html <ol><li>...</li>...</ol>列表的确切方面,但假设您的意思是成员<li>标记的文本内容,那么您可能会这样做:

$('ol.selector li')
    .each(function(i) { 
        $("<input name='something-" + i + "'>")
            .val($(this).html())
            .appendTo('form.selector');
    }
};