我正在使用jquery的分词自动完成插件(http://loopj.com/2009/04/25/jquery-plugin-tokenizing-autocomplete-text-entry)。我主要使用Ruby,对于javascript并不熟悉。
我的基本设置如下,在新的空白表单中可以正常工作:
问题出现在我尝试预填充它时,比如编辑页面。我正在尝试做类似这样的事情(其中“#tag_ids_field”文本框在页面加载时包含JSON-这样应用程序看起来更干净)。
Flash84x: 我不确定你想表达什么。tag_ids_field不是数据库字段,它是我在模型上定义的虚拟属性。setter(接受逗号分隔的id列表)定义记录与这些标签在数据库中的关系。getter(在页面加载时填充文本区域)可以返回任何我想要的内容 - 现在我将其设置为只返回JSON中的当前标签数据,因为这样一切都更整洁。
如果您需要更详细的解释,我可以解释得更详细,但Ruby方面的工作很好,我感到很舒适。我只是真的不太了解javascript,所以需要帮助在客户端处理数据。
我的基本设置如下,在新的空白表单中可以正常工作:
$(document).ready(function () {
$("#tag_ids_field").tokenInput("/tags", {
queryParam: "search"
});
});
问题出现在我尝试预填充它时,比如编辑页面。我正在尝试做类似这样的事情(其中“#tag_ids_field”文本框在页面加载时包含JSON-这样应用程序看起来更干净)。
$(document).ready(function () {
var tags = $("#tag_ids_field").html();
$("#tag_ids_field").tokenInput("/tags", {
queryParam: "search",
prePopulate: tags
});
});
然而,当页面加载时,我发现它只充满了数百个标题为“undefined”的条目。即使我将Rails提供的JSON输出直接放入.js文件中,仍然会出现这种情况:
$(document).ready(function () {
$("#tag_ids_field").tokenInput("/tags", {
queryParam: "search",
prePopulate: "[{\"id\":\"44\",\"name\":\"omnis sit impedit et numquam voluptas enim\"},{\"id\":\"515\",\"name\":\"deserunt odit id doloremque reiciendis aliquid qui vel\"},{\"id\":\"943\",\"name\":\"exercitationem numquam possimus quasi iste nisi illum\"}]"
});
});
这显然不是一个解决方案,我只是因为沮丧而尝试了一下,但得到了相同的行为。
我的两个问题:
一、为什么在我尝试预填文本框时,它们会被填满“undefined”标签,并如何使它们成功地预填?
二、我计划在同一页上有许多类似的自动完成字段(用于同时编辑多个记录-它们都查询同一位置)。如何使每个自动完成字段从它自己的文本框中获取其预填值?例如(将这些设置应用于具有某个特定类别的所有输入框,而不仅仅是特定 ID 的输入框):
$(document).ready(function () {
$(".tag_ids_field").tokenInput("/tags", {
queryParam: "search",
prePopulate: (the contents of that particular ".tag_ids_field" input box)
});
});
Flash84x: 我不确定你想表达什么。tag_ids_field不是数据库字段,它是我在模型上定义的虚拟属性。setter(接受逗号分隔的id列表)定义记录与这些标签在数据库中的关系。getter(在页面加载时填充文本区域)可以返回任何我想要的内容 - 现在我将其设置为只返回JSON中的当前标签数据,因为这样一切都更整洁。
如果您需要更详细的解释,我可以解释得更详细,但Ruby方面的工作很好,我感到很舒适。我只是真的不太了解javascript,所以需要帮助在客户端处理数据。