我正在寻找一种使用 DOJO 进行文本框自动提示的简单方法。我要查询的数据库表(使用 PHP 脚本,以 JSON 形式返回)有超过 100,000 条记录,所以这真的不应该采用 FilteringSelect 或 ComboBox 的形式,因为我显然不希望用户单击向下箭头返回整个数据集。
JQuery 和 YUI 等其他库使它变得非常简单,但这个特别的项目是基于 DOJO 的,我不愿意引入另一个 JS 类。
最佳答案
成功了!
即使我查询的是 100,000 条记录。返回速度低于 30 毫秒。我什至将数据库大小增加到 500,000 条记录,自动建议速度非常可以接受(仍低于 120 毫秒)。我确信在 PHP 端使用一点缓存可以做得更好。
我最终使用了 QueryReadStore 和 FilteringSelect。 JsonRestStore 可能会奏效,但我从 dojo 站点找到了一个简单的工作示例并以此为基础构建。
下面是一个自动提示文本框的有效 DOJO 代码,它可以访问非常大的数据集 - 简短而贴心:
var vendorStore = new dojox.data.QueryReadStore({
url: "../vms/htdocs/ajax/search.php"
});
var vendorSelect = new dijit.form.FilteringSelect({
name: "vendorSelection",
store: vendorStore,
autoComplete: false,
required: true,
labelType: "text",
placeHolder: "Search vendors",
pageSize: 20,
hasDownArrow: false,
style: "width: 175px;",
searchAttr: "company_name",
id: "vendorSelect"
},
"vendorSelection");
vendorSelect.startup();
当然要坚持<select id="vendorSelection"></select>
页面正文中的某处。效果很好。
再次感谢!
关于php - 使用 DOJO 自动完成文本框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7871110/