【问题标题】:twitter bootstrap's typeahead and multiple text fieldstwitter bootstrap 的 typeahead 和多个文本字段
【发布时间】:2013-02-10 05:26:43
【问题描述】:

我的应用处理标签和电影实体:多对多关系。加入实体被命名为“tagazation”。我希望用户能够在模态窗口中为每部电影添加标签。 因此,我将隐藏的模式窗口渲染到索引操作中的每部电影的页面。问题出在 tag_id 字段中: 我在每个表单中都有 twitter bootstrap 的 typeaheaded 文本字段。所有这些字段共享公共类“标签输入”。在文本字段中的选择事件触发 set_id 函数:

$(document).ready(function() {
function set_id(item, val, text){
    $(this).parent().children("#tagazation_tag_id").val(val);
}
$(".tags-input").typeahead({
    source: [],
    itemSelected: set_id
});
});

set_id 函数应该以与触发该回调的文本字段相同的形式更改特定的隐藏字段,但标签 ID 有多个隐藏字段。当然,如果我们知道 set_id 函数是针对哪部电影触发的,那当然不是什么大问题。

我相信,应该有一种“标准”的方式来处理这个问题,而不是通过 DOM 树搜索来进行仍然无法正常工作的浏览。

【问题讨论】:

    标签: javascript jquery ruby-on-rails twitter-bootstrap callback


    【解决方案1】:

    如果我了解您要做什么,我认为最简单的解决方案是仅将一个隐藏的模态对话框呈现为 html,而不是为每部电影呈现一个模态对话框。在您打开模态之前,您可以使用 javascript 设置所需的任何文本,以使模态引用被点击的电影。

    如果您只有一个模态对话框,您可以将隐藏标签 id 字段称为$('#tagazation_tag_id'),而不会混淆它指的是哪个输入。

    【讨论】:

    • 埃里克,你完全理解它的正确方式。是的,这是我的第一个想法。但我喜欢在页面生成阶段而不是通过 JS 设置 movie_id 的可能性......但现在我认为这是解决问题的最可行方法,无论如何谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-20
    • 1970-01-01
    • 2016-04-03
    • 2012-09-05
    相关资源
    最近更新 更多