Imagine a json file with the following data:
[
{
color: \"red\",
value: \"#f00\"
},
{
color: \"green\",
value: \"
Using a remote data source:
$("#selector").autocomplete({
source: function (request, response) {
$.ajax({
url: "my_server_side_resource.php",
type: "GET",
data: request,
success: function (data) {
response($.map(data, function (el) {
return {
label: el.color,
value: el.value
};
}));
}
});
},
select: function (event, ui) {
// Prevent value from being put in the input:
this.value = ui.item.label;
// Set the next input's value to the "value" of the item.
$(this).next("input").val(ui.item.value);
event.preventDefault();
}
});
Tweak the $.ajax
call as needed. This example will generate requests to your PHP resource that look like this:
my_server_side_resource.php?term=xyz
If you have control over your server-side code, you could change the data that's returned to look like this:
[
{
label: "red",
value: "#f00"
}, /* etc */
]
You can simply use a string, the name of your server-side resource as the source
:
$("#selector").autocomplete({
source: "my_server_side_resource.php",
select: /* same as above */
});
Check out the remote with JSONP example for a full example using a server-side resource.
Edit: See this example for a working demo using local data: http://jsfiddle.net/SMxY6/
You need to change your JSON object to use the "label" property. From the docs:
An Array of Objects with label and value properties: [ { label: "Choice1", value: "value1" }, ... ]
The label property is displayed in the suggestion menu. The value will be inserted into the input element after the user selected something from the menu. If just one property is specified, it will be used for both, eg. if you provide only value-properties, the value will also be used as the label.
Then, you need to set the values of the other text fields when the "change" or "select" events are fired.
$(function() {
$("#subject_name").autocomplete({
source: function(request, response) {
$.ajax({
url: "api/listBasicsubject",
dataType: "json",
type: "POST",
data: {
subject_name: request.term,
},
success: function(data) {
response($.map(data.data, function(item) {
return {
label: item.subject_name,
value: item.subject_name
}
});
}
},
autoFocus: true,
minLength: 1
});
});
});
After hours of working.. Finally made it happen. Thing is I have a json array consisting of many json objects. Each json object has bank name and its ifsc code.User needed to Type bank and filter out bank detail row from database. Upon selecting that bank... I had 2 input fields one for bank and other for ifsc code. I select bank name and corresponding ifsc code is shown. So this is how i did it:-
<script type="text/javascript">
$(function() {
$("#newBeneBankName").autocomplete({
source: function(request, response) {
$.ajax({
url: "getBankDetailsIFSCJson",
type: "GET",
data: {
term: request.term
},
dataType: "json",
success: function (data) {
response($.map(data, function (el) {
return {
label: el.label,
value: el.value
};
}));
}
});
}, //newBeneBankName addBeneIfscCode
focus: function (event, ui) {
event.preventDefault();
$("#newBeneBankName").val(ui.item.label);
},
select: function (event, ui) {
event.preventDefault();
$("#addBeneIfscCode").val(ui.item.value);
$("#newBeneBankName").val(ui.item.label);
}
});
});
my json array= [ { label:"state bank of india", value:"SBIN00076" }, { label:"ICICI Bank", value:"ICIC001" },.. ]