我有一些略显时髦的UI来输入博客文章的标签:当标签被输入到输入字段时,它们被包裹在一个风格化的框中,使它们看起来很漂亮,最终结果是这样的:http://forr.st/posts/OLs/original
现在,这个输入字段(称为字段1)不是提交给控制器的表单的一部分(我使用的是RoR-btw),原因有两个:除了实际的标签之外,它还包含无关的html标签;此外,如果是表单的一部分,按enter键将提交表单,而不是触发将输入的标记封装到span中的js。
因此,我所做的是,当输入每个标记时,我将其值(通过js)复制到一个隐藏的输入字段中,该字段是标记输入表单的一部分,提交时只包含标记值,不包含其他值。问题是:我应该用什么作为分隔符来分隔隐藏输入字段中的标记。目前我正在使用";"但是如果标签本身包含;那会引起问题。
我也愿意接受关于如何跟踪输入"字段1"的标签的一般方法的建议
非常感谢,
我建议只为每个标记添加一个隐藏的输入。
<input type="hidden" name="post[tags][]" value="tag_name" />
<input type="hidden" name="post[tags][]" value="tag_name" />
<input type="hidden" name="post[tags][]" value="tag_name" />
然后在轨道
.rb后
def tags=(value)
tag_array = [*value]
# then just filter these out.
end
我在tokenInput jQuery插件中使用了类似的方法。但在我的情况下,我已经将它放在了表单中。我通过捕获按键事件并阻止该输入来解决您提到的问题,并且忽略了搜索输入值。
我真正喜欢把它放在表单中的一件事是它之后的管理方式。我将隐藏的标记、名称和移除"x"放在一个跨度中(如您所述),然后在单击"x"时移除此标记。我喜欢这个,因为名称和hidden_tag同时被删除了。
只是另一个提示。如果可以,请在隐藏字段中传递tag_id。这样就不必添加tags属性add-all:<input type="hidden" name="post[tag_ids][]" value="tag_name" />
。