我正在尝试使用Twitter Bootstrap的typeahead javascript的updater选项来检索同一行的多个值,然后在输入框上的同一选定行上显示一列,而在另一行上显示另一列。不幸的是,我似乎无法找到下面的代码如何无法更新id为ProductName
的输入框。
$('#ProductName').typeahead({
source: function(query,process){
var query = {query:query};
return $.post('/products/ajax_search_product_by_name',query,function(data){
return process(data.options);
},"json");
},
minLength: 3,
items: 50,
updater: function(item){
lastIndex = item.lastIndexOf('-');
length = item.length;
var product_id;
var product_name;
product_id = item.substr(lastIndex + 1, length);
product_name = item.substr(0,lastIndex);
document.getElementById('ProductName').value = product_name;
console.log(product_name);
}
我在文档中读到该项具有typeahead实例的范围:
The method used to return selected item. Accepts a single argument, the item and has the scope of the typeahead instance.
所以我尝试this
而不是使用DOM选择器,但它也不起作用。我也试过$('#ProductName').val(product_name)
的jQuery方式,但没有运气。
我在这里错过了什么吗?
答案 0 :(得分:6)
你在这里遗漏了一些东西:) 更新程序方法不应该将值设置为输入,只是为了返回它。 实际值设置在调用更新程序方法后完成。 我相信如果您使用以下内容结束更新程序方法
return product_name;
它应该可以正常工作。