Ну, вы должны сделать значение таким же, как метка. В вашем случае это будет выглядеть так:
success: function( data ) {
response( $.map( data.geonames, function( item ) {
return {
label: item.name + (item.adminName1 ? ", " + item.adminName1 : "") + ", " + item.countryName,
value: item.name + (item.adminName1 ? ", " + item.adminName1 : "") + ", " + item.countryName,
}
}));
}
Я предполагаю, что вам нужно это значение для других целей. У меня была такая же ситуация, и в зависимости от ваших требований есть несколько вариантов.
У вас может быть скрытое поле, в котором вы можете сохранить значение при выборе опции.
Вот как это будет выглядеть:
$(function() {
$( "#city" ).autocomplete({
source: function( request, response ) {
$.ajax({
url: "http://ws.geonames.org/searchJSON",
dataType: "jsonp",
data: {
featureClass: "P",
style: "full",
maxRows: 12,
name_startsWith: request.term
},
success: function( data ) {
response( $.map( data.geonames, function( item ) {
return {
label: item.name + (item.adminName1 ? ", " + item.adminName1 : "") + ", " + item.countryName,
value: item.id,
source: item
}
}));
}
});
},
minLength: 2,
change: function(event, ui) {
if (ui.item) {
$('#your_hidden_input').val(ui.item.source.id);
$(this).val(ui.item.value);
}
}
});
});