3

我在一个文本框上使用了带有 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('id'); 显示未定义...所以任何人都可以告诉我如何获取字段的属性,哪个 typeahead 是获取目标?

提前致谢 :)

4

1 回答 1

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

于 2013-02-27T02:49:22.117 回答