Asim Shahzad
Asim Shahzad

Reputation: 23

How to set ajax global event to false when using Bloodhound

i am using typeahead for autocomplete.The following code is working fine.

var employees = new Bloodhound({
    datumTokenizer: function (d) { return Bloodhound.tokenizers.whitespace(d.name); },
    queryTokenizer: Bloodhound.tokenizers.whitespace,
    addOnBlur: true,

    remote: {
        url: $url + '?name=%QUERY',
        global: false,
        wildcard: '%QUERY',
        filter: function (response) {
            return $.map(response.results, function (employee) {

                return {
                    mark: employee.MARK,
                    actitle: employee.ACCOUNTTITLE, 
                    code: employee.CODE
                }
            });
        }
    }

});

employees.initialize();

$($classname).typeahead({ highlight: true, minLength: 1, limit: 5 }, {
    name: 'employees', displayKey: 'mark', source: employees.ttAdapter(), global: false
})
    .on("typeahead:selected", function (obj, company1) {
        //debugger;
    $($retField).val(company1.actitle);
    $($cField).val(company1.code);
})
    .on('focusout', function (obj, company) {
        //debugger;
        $($classname).trigger("typeahead:first-child");
 });

}

i want to set ajax global event to false. Please help me to solve the issue

Upvotes: 1

Views: 133

Answers (1)

Louis Eloy
Louis Eloy

Reputation: 335

Late to the party but I figured it out. Use the transport property:

var employees = new Bloodhound({
    datumTokenizer: function(d) {
        return Bloodhound.tokenizers.whitespace(d.name);
    },
    queryTokenizer: Bloodhound.tokenizers.whitespace,
    addOnBlur: true,
    remote: {
        url: $url + '?name=%QUERY',
        global: false,
        wildcard: '%QUERY',
        transport: function(opts, onSuccess, onError) {
            var url = opts.url.split("#")[0];
            var query = opts.url.split("#")[1];
            $.ajax({
                url: url,
                data: "search=" + query,
                type: "POST",
                success: onSuccess,
                error: onError,
                global: false
            })
        }
        filter: function(response) {
            return $.map(response.results, function(employee) {
                return {
                    mark: employee.MARK,
                    actitle: employee.ACCOUNTTITLE,
                    code: employee.CODE
                }
            });
        }
    }
});
employees.initialize();

Based on this other stackoverflow answer:

Upvotes: 0

Related Questions