我在一个文本框中使用了带有ajax的bootstrap的typeahead脚本,现在我已按下面的方式调用
$('#EquipmentLogEquipmentType').typeahead({
source: function(query, process) {
var $url =SITE_URL+ 'api/equiplg_typefields_typeahead/' + query + '.json';
var $items = new Array;
var id=$(this).attr('id');
id=id.split('eq_');
id=id[1];
$items = [""];
$.ajax({
url: $url,
dataType: "json",
type: "POST",
data: { field_name: id},
success: function(data) {
console.log(data);
$.map(data, function(data){
var group;
group = {
id: data.id,
name: data.name,
toString: function () {
return JSON.stringify(this);
//return this.app;
},
toLowerCase: function () {
return this.name.toLowerCase();
},
indexOf: function (string) {
return String.prototype.indexOf.apply(this.name, arguments);
},
replace: function (string) {
var value = '';
value += this.name;
if(typeof(this.level) != 'undefined') {
value += ' <span class="pull-right muted">';
value += this.level;
value += '</span>';
}
return String.prototype.replace.apply('<div style="padding: 10px; font-size: 1.5em;">' + value + '</div>', arguments);
}
};
$items.push(group);
});
process($items);
}
});
},
property: 'name',
items: 10,
minLength: 2,
updater: function (item) {
var item = JSON.parse(item);
console.log(item.name);
return item.name;
}
});
现在在上面的代码中我提到了$(this).attr(&#39; id&#39;);显示未定义...所以任何人都可以告诉我如何获得字段的属性哪个类型为目标?
提前谢谢:)
答案 0 :(得分:4)
您必须使用
var id=this.$element.attr('id'));
$('#eq_equipment_type,#eq_identifier,#eq_model,#eq_manufacturer').typeahead({
source: function(query, process) {
var $url =SITE_URL+ 'api/equiplg_typefields_typeahead/' + query + '.json';
var $items = new Array;
var id = this.$element.attr('id'));
id=id.split('eq_');
id=id[1];
$items = [""];
$.ajax({
url: $url,
...
返回当前预输入控件的正确ID