3

1 つのテキスト ボックスで ajax を使用したブートストラップの 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'); について言及しました。これは未定義を示しています...だから、タイプアヘッドがターゲットを取得するフィールドの属性を取得する方法を誰か教えてもらえますか?

前もって感謝します :)

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 に答える