【发布时间】:2015-06-27 23:47:31
【问题描述】:
我用这个插件 http://plugins.upbootstrap.com/bootstrap-ajax-typeahead/ 在网页上具有预输入功能。
我必须输入文本框。
一个是品牌卡,一个是模型车。
我输入 To,它会显示我丰田
when toyota is selected, i would like to see echo, matrix....
所以我设置了一个变量brandId来获取选择的值,但是在ulr中返回的值是
http://localhost:8080/brands/undefined/models?query=ech
但在显示网址之前,手表表达式中的 ibrandId = 1。
$(document).ready(function () {
var brandId;
$("#brand").typeahead({
onSelect: function(item) {
debugger;
console.log(item);
//enable component
$("#model").removeAttr("disabled");
brandId = item.value;
},
ajax: {
url: 'http://localhost:8080/brands',
valueField: "brandId",
displayField: "brand"
}
});
$("#model").typeahead({
ajax: {
url: '/brands/' + brandId + '/models',
valueField: "modelId",
displayField: "model"
}
});
}
【问题讨论】:
-
不应该
valueField: "brandId",是valueField: brandId,?你也可以去掉var brandId;这一行,如果你在函数中分配一个未知变量,它会自动变成一个全局变量。 -
试图更改 valueField 值,但得到相同的结果。我得到 brandId 没有在 url 属性中定义
-
@cari 依赖全局变量是不好的做法,而且在不警告未来用户或代码维护者的情况下这样做是非常不好的做法。最好将它们显式声明为全局变量(并对其进行评论)。如果做不到这一点,保存模块范围的对象会更好。
标签: jquery json twitter-bootstrap-3 typeahead.js