NealR NealR - 1 year ago 84
jQuery Question

jQuery - Use key/value pair in autocomplete

In my ASP MVC view, I am passing a key/value pair back from the controller. After looking at fiddler and viewing in Chrome's debugger I can see that the information is being passed back correctly.

I would like for the

of the key/value pair to be the item that is displayed in the
list. When the user selects an item from the list, I would like that item's
to be placed into the text box.

Here is the jQuery code from my view

$(function () {
source: '@Url.Action("compSearch", "AgentTransmission")',
minLength: 2,
select: function (event, ui) {

One thing I noticed - if I add the
variable to the watch list in the browser's debugger I notice that the label and the value are the exact same. Again, however, I'm seeing that what's being returned is the complete key/value pair.

Here is a screen shot of the Network/Response console after the search is complete. Some of the data is private so I blacked it out however you can see there is a key/value pair being returned.

enter image description here

Answer Source

You'll need to make the AJAX request yourself and transform the data to the format that jQueryUI expects:

$(function () {
        source: function (request, response) {
               url: '@Url.Action("compSearch", "AgentTransmission")',
               type: 'GET',
               dataType: 'json',
               data: request,
               success: function (data) {
                   response($.map(data, function (value, key) { 
                        return {
                            label: value,
                            value: key
        minLength: 2

Also, the value property of an autocomplete item is automatically placed in the input when that item is selected, so there should be no need for a custom select handler.


Recommended from our users: Dynamic Network Monitoring from WhatsUp Gold from IPSwitch. Free Download