У меня есть два поля ввода:
<input name="accountCode" class="accountCode grid_2"/>
<input name="accountCode" class="accountCode grid_2"/>
Я хочу иметь автозапуск в обоих этих полях. Я написал следующий JavaScript:
$(".accountCode").autocomplete(
{
minLength : 1,
source : function(request, response) {
$.ajax({
url : baseUrl + "Autocomplete/Account?accountCode=" + $(this).val(),
dataType : "json",
success : function(data) {
response($.map(data, function(item) {
return {
value : item.accountCode,
desc : item.accountName
}
}));
}
});
},
focus : function(event, ui) {
$(this).val(ui.item.accountCode);
return false;
},
select : function(event, ui) {
// $("#category").val( ui.item.name );
$(this).val(ui.item.value);
// $( "#project-description" ).html( ui.item.desc );
return false;
}
}).data("autocomplete")._renderItem = function(ul, item) {
return $("<li></li>").data("item.autocomplete", item).append(
"<a><strong>" + item.value + " </strong>" + item.desc + "</a>")
.appendTo(ul);
};
Конечно, мой сервер возвращает данные JSON с двумя полями: accountCode
и accountName
.
Я хочу, чтобы оба входа использовали пользовательский рендерер в _renderItem
, чтобы он отображался в списке:
"<a><strong>" + item.value + " </strong>" + item.desc + "</a>"
Для первого поля он отлично работает, но для второго поля он отображает только accountCode
из item.value
.
Я проверил, что JSON, полученный с сервера, в обоих случаях одинаковый, поэтому проблема в Javascript.
Вы знаете, почему эта проблема существует?