2014-09-06 91 views
0

我使用的是選擇二與customFormatResult,因爲這顯示代碼的任何項目:無法選擇從選擇二

function productFormatResult(product) { 
    var markup = '<div class="row-fluid">' + 
      '<div class="col-xs-2"><img src="' + product.url + '" /></div>' + 
      '<div class="col-xs-10">' + product.value + '</div>' + 
      '</div>'; 
    var prueba = '<img style="height: 40px;width: 40px;" src="' + 
      product.url + '" class="img-rounded" id="ProductoForm_0_image" />&nbsp;&nbsp;' + product.value; 

    return prueba; 
} 

function productFormatSelection(product) { 
    return product.value; 
} 

$("input.typeahead").select2({ 
    placeholder: "Buscar producto", 
    minimumInputLength: 0, 
    ajax: { 
     url: Routing.generate('get_products'), 
     dataType: 'json', 
     quietMillis: 250, 
     data: function(term, page) { 
      return { 
       filter: term, 
       page: page 
      }; 
     }, 
     results: function(data, page) { 
      var more = (page * 30) < data.total_count; 
      return {results: data.items, more: more}; 
     } 
    }, 
    formatResult: productFormatResult, 
    formatSelection: productFormatSelection, 
    escapeMarkup: function(m) { 
     return m; 
    }, 
    formatNoResults: function() { 
     return "No se encontraron productos para la palabra actual"; 
    }, 
    formatAjaxError: function() { 
     return "No hay conexión con el servidor"; 
    } 
}); 

但我可以選擇/從選擇的任何項目時,他們都表現出了,爲什麼?我的代碼有什麼問題?您可以測試活生生的例子here(尋找這一文本OFERTAS REALIZADAS一個FACTURAR:這裏說Producto

+0

問題是,當您打開下拉列表時,它會顯示所有項目,並且您不希望它們在搜索前顯示任何項目嗎?如果是這樣,設置minimumInputLength:1 – drneel 2014-09-06 19:11:49

+0

@drneel謝謝但不是,問題是當我顯示的項目,我可以選擇任何他們,嘗試搜索或從列表中選擇一個,你會看到我在說什麼 – ReynierPM 2014-09-06 19:26:08

回答

1

你需要返回ID。

$("input.typeahead").select2({ 
    id: function(prod) { return prod.value; }, 
    placeholder: "Buscar producto", 
    minimumInputLength: 0, 
    id: function(prod){ return "prod"; }, 
    ajax: { 
     url: Routing.generate('get_products'), 
     dataType: 'json', 
     quietMillis: 250, 
     data: function(term, page) { 
      return { 
       filter: term, 
       page: page 
      }; 
     }, 
     results: function(data, page) { 
      var more = (page * 30) < data.total_count; 
      return {results: data.items, more: more}; 
     } 
    }, 
    formatResult: productFormatResult, 
    formatSelection: productFormatSelection, 
    escapeMarkup: function(m) { 
     return m; 
    }, 
    formatNoResults: function() { 
     return "No se encontraron productos para la palabra actual"; 
    }, 
    formatAjaxError: function() { 
     return "No hay conexión con el servidor"; 
    } 
});