在过去,我一直使用隐藏字段,在提交按钮onClick事件中,我使用自定义代码将列表内容(li元素的文本)填充到隐藏表单字段中,并将其解析出来,使用自定义代码。在HTML表单提交中发布有序列表的内容的最佳方式是什么?
这总是感觉像是黑客,我想知道是否有更现代的方法。我想找到最通用的方法,但如果工具很重要,我在客户端使用JQuery,而在服务器上使用Ruby/Sinatra。也许把列表变成一个JSON对象,然后在服务器端消耗?
在过去,我一直使用隐藏字段,在提交按钮onClick事件中,我使用自定义代码将列表内容(li元素的文本)填充到隐藏表单字段中,并将其解析出来,使用自定义代码。在HTML表单提交中发布有序列表的内容的最佳方式是什么?
这总是感觉像是黑客,我想知道是否有更现代的方法。我想找到最通用的方法,但如果工具很重要,我在客户端使用JQuery,而在服务器上使用Ruby/Sinatra。也许把列表变成一个JSON对象,然后在服务器端消耗?
如果要为昏迷无法相依一个值
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(" "));
目前尚不清楚一个HTML <ol><li>...</li>...</ol>
名单究竟哪方面你想传递的,但假设你的意思成员<li>
标签的文本contentents,那么你可能会做这样的事情:
$('ol.selector li')
.each(function(i) {
$("<input name='something-" + i + "'>")
.val($(this).html())
.appendTo('form.selector');
}
};
谢谢。为了避免用户输入的列表项中有逗号,但使用分隔列表时出现问题,我使用了一个更“不同寻常”的字符。 – 2010-09-27 21:05:52
如果您将使用第二个示例,则不必担心内容中出现连接字符串。您还可以使用'params [:field]'作为Sinatra中的普通Ruby数组来访问这些值。 (字段名的'[]'部分使得大多数Web框架都会自动发生这种情况,包括Sinatra和Rails。) – 2010-09-28 04:09:33