2012-12-27 50 views
1

我試圖使用Twitter Bootstrap的typeahead javascript的updater選項來檢索同一行的多個值,然後在輸入框和另一列上的同一選定行上顯示一列。不幸的是,我似乎無法找出如何下面的代碼不工作來更新輸入框,其ID爲ProductNameBootstrap typehead更新選項

$('#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); 
       } 

,我讀了這個項目有預輸入實例的範圍文檔中:

The method used to return selected item. Accepts a single argument, the item and has the scope of the typeahead instance. 

所以,我想this而不是使用DOM選擇,但它也不起作用。我也嘗試過jQuery的方式$('#ProductName').val(product_name),但沒有運氣。

我在這裏錯過了什麼嗎?

回答

5

您在這裏失去了一些東西:) 的更新方法是不應該的值設置爲輸入時,僅歸還。 實際值設置是在更新程序方法被調用後完成的。 我相信,如果你結束你更新法:

return product_name; 

它應該工作的罰款。