如何在typeahead函数调用中获取带有typeahead of bootstrap的文本框属性

时间:2013-02-26 05:26:12

标签: jquery cakephp twitter-bootstrap bootstrap-typeahead

我在一个文本框中使用了带有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;);显示未定义...所以任何人都可以告诉我如何获得字段的属性哪个类型为目标?

提前谢谢:)

1 个答案:

答案 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