@ charlietfl Мне очень жаль, я возвращаю коллекцию json SelectListItem из представления Asp.Mvc.
предыдущий образец данных был результатом операции карты, ajax возвращает:
[
Object { Selected=false, Text="Guarujá", Value="9182"},
Object { Selected=false, Text="Jaboticabal", Value="9265"},
Object { Selected=false, Text="Jacareí", Value="9267"},
Object { Selected=false, Text="Jandira", Value="9277"},
Object { Selected=false, Text="Jaú", Value="9285"},
Object { Selected=false, Text="Jundiaí", Value="9295"}
]
Я думаю, автозаполнение получит массив из: {label: "textToShow", value: "valueToBeKey"}
«Объект» в каждой строке моего возврата к исходному событию нарушает его?
Я так сплю, но всякая помощь приветствуется.
Большое спасибо
@ charlietfl Образец данных, возвращаемый исходному событию после операции карты:
[
Object { label="Guarujá", value="9182"},
Object { label="Jaboticabal", value="9265"},
Object { label="Jacareí", value="9267"},
Object { label="Jandira", value="9277"},
Object { label="Jaú", value="9285"},
Object { label="Jundiaí", value="9295"},
Object { label="São João da Boa Vista", value="9647"},
Object { label="São José do Rio Preto", value="9659"},
Object { label="São José dos Campos", value="9660"}
]
Имея ту же проблему, что и , этот вопрос, но решение не работает для меня.
Кто-нибудь может мне помочь?
В моем сценарии ключ / значение после выбора элемента jquery установите текстовое поле со значением, а не с меткой.
Я нашел точку, где jquery установил мое текстовое поле со значением:
.menu({
focus: function( event, ui ) {
var item = ui.item.data( "item.autocomplete" );
if ( false !== self._trigger( "focus", event, { item: item } ) ) {
// use value to match what will end up in the input, if it was a key event
if ( /^key/.test(event.originalEvent.type) ) {
self.element.val( item.value ); <<<====== SETTING HERE
}
}
},
Вот мой код:
//-------------------------------------------------
function resetElmntKey(elm) {
var nmItK = $(elm).attr('data-fielditemid');
var sltK = $("input[name='" + nmItK + "'][type='hidden']");
$(sltK).val(0);
}
//-------------------------------------------------
function setupSelection(elm, selIt) {
if (selIt != undefined) {
var nmItK = $(elm).attr('data-fielditemid');
var sltK = $("input[name='" + nmItK + "'][type='hidden']");
var id = $(elm).attr('id');
var sltV = "#" + id;
$(sltK).val(selIt.value);
$(sltV).val(selIt.label);
}
}
//-------------------------------------------------
var context = new Array();
function setupView() {
var elm = $("div[class='editor-field'] :text");
$.each(elm, function () {
//-------
elemento = $(this);
//-------
/*
elemento.keypress(function (event) {
if (event.keyCode == 13) {
event.preventDefault();
}
});
*/
//-------
elemento.autocomplete({
source: function (request, response) {
var elId = $(this.element).attr('id');
context[elId] = new Array();
context[elId].elUr = this.element.attr('data-urlactionfind');
context[elId].elFt = this.element.attr('data-fieldfilterid');
context[elId].vlFt = $("#" + context[elId].elFt).val();
context[elId].elVl = this.element.val();
context[elId].result = null;
$.ajax
(
{
url: context[elId].elUr,
dataType: "json",
data: { filtro: context[elId].vlFt, fragmento: context[elId].elVl },
success: function (data) {
context[elId].result = $.map(data, function (item) {
return { label: item.Text, value: item.Value }
});
response(context[elId].result);
}
}
)
},
select: function (event, ui) {
resetElmntKey(this);
var elId = $(this).attr('id');
setupSelection(this, ui.item);
},
focus: function (event, ui) {
event.preventDefault();
resetElmntKey(this);
var elId = $(this).attr('id');
setupSelection(this, ui.item);
}
}).blur(function (event) {
event.preventDefault();
resetElmntKey(this);
var elId = $(this).attr('id');
if (context[elId].result != undefined) {
var usrVal = this.value;
var res = $.grep(context[elId].result, function (selIt, idx) {
return $.trim(selIt.label) == $.trim(usrVal);
});
if (res != undefined) {
setupSelection(this, res[0]);
}
}
});
//-------
});
/*
elm.keyup(function () {
var url_busca = $(this).attr('data-urlactionfind');
alert('[id:' + $(this).attr('id') + ']' +
'[val:' + $(this).val() + ']' +
'[urlact:' + $(this).attr('data-urlactionfind') + ']' +
'[fldFlt:' + $(this).attr('data-fieldfilterid') + ']');
});
*/
}
function onloadpartial() {
setupView();
}
//-------------------------------------------------