2014-10-20 71 views
0

我使用twitter bootstrap 3 typeahead,带有bloodhound建议引擎。键入文本框动态输入后无法工作

我已经在HTML表格列中的文本框(class:typeahead)中应用了这种类型,并且在选择了typeahead之后,会出现一个新行。

我有一个问题,将typeahead应用到这个新动态添加的文本框(也是类:typeahead)。 Chrome浏览器开发的错误:“遗漏的类型错误:未定义是不是一个函数”

这是我的JS:

<script src="<?php echo site_url('assets/js/jquery-2.0.3.min.js');?>"></script> 
<script src="<?php echo site_url('assets/js/bootstrap.min.js');?>"></script> 

<script src="<?php echo site_url('assets/js/bloodhound.js');?>"></script> 
<script src="<?php echo site_url('assets/js/typeahead.jquery.js');?>"></script> 

<script> 

/*/////////////////// 
// bloodhound 
// 
*/ 
var stocksData = source_inventory; 
var stocks = new Bloodhound({ 
    datumTokenizer: function (d) { 
     for (var prop in d) { return Bloodhound.tokenizers.whitespace(d.item_code);}   
    }, 
    queryTokenizer: Bloodhound.tokenizers.whitespace, 
    //local: ["(A)labama","Alaska","Arizona","Arkansas","Arkansas2","Barkansas"] 
    limit: 5, //#2 added 
    local : stocksData 
}); 
stocks.initialize(); 

/*/////////////////// 
// typeahead 
// 
*/ 
function apply_typeahead(elm){ alert('tes and yes'); 
    $(elm).typeahead(null,{ 
     displayKey: function(stocks) { 
      for (var prop in stocks) { 
       return stocks.item_code; 
      } 
     }, 
     source:stocks.ttAdapter() , 
     updater: function (stocks) { 
      return stocks; 
     } 
    }).on('typeahead:selected', function (obj, datum) { 
     var var_datum = []; 
     var_datum[0] = datum.item_id; 
     dialog_inventory_pull_data(var_datum); 
    }); 
} 

//apply_typeahead('input[name^=ast_code].typeahead'); 



$(document).ready(function(){ 
    /* 
     //some code 
    */ 
}); 


/*$('.typeahead').on('added',function(){ 
    apply_typeahead('input[name^=ast_code].typeahead'); 
    //$('.typeahead').typeahead(typeaheadSettings); 
});*/ 

//JS CUSTOM PAGE 

function table_detail_insert(data){  
    if(data){  
     for(var p = 0;p<data.length;p++){ 
      /*code*/    
     } 
     //apply_typeahead($('input[name^=ast_code].typeahead')); 
     //apply_typeahead('input[name^=ast_code].typeahead'); 
     return data;   
    }else{ 
     console.log('error'); 
    } 
} 
var url_1 = "/inventory/detail"; 
function dialog_inventory_pull_data(data_inventory){ 
    var data_inventory_param = $.map(data_inventory, function(value, index) { 
     return [value]; 
    }); 
    var data_ajax_raw = $.ajax({ 
     url:ajax_url_1, 
     data: {inventory:data_inventory_param}, 
     dataType: "json", 
     success: function(result){ 
      table_detail_insert(result);    
     } 
    }); 
} 

</script> 

我试图运行从控制台apply_typeahead功能,它的工作原理与初始化的文本框,但经过新行动态创建,再次从控制台运行相同的功能不起作用,并且所有文本框都没有提前显示。

什么可能会出错?

感谢

回答