У меня странная проблема с автозаполнением jQuery.
У меня есть текстовое поле автозаполнения, которое извлекает несколько значений и в порядке их перечисления, однако я хочу иметь другое значение для каждого выбранного элемента в скрытом поле.
Вот код, который я использую:
$('#RecipientsList')
// don't navigate away from the field on tab when selecting an item
.bind( "keydown", function( event ) {
if ( event.keyCode === $.ui.keyCode.TAB &&
$( this ).data( "autocomplete" ).menu.active ) {
event.preventDefault();
}
})
.autocomplete({
source: function (request, response) {
$.ajax({
url: '<%=Url.Action("GetRecipients", "Bulletin") %>',
dataType: "json",
data: {
q: extractLast(request.term)
},
dataFilter: function (data) { return data; },
success: function (data) {
response($.map(data, function (item) {
return {
label: item.FirstName + ' ' + item.LastName,
value: item.FirstName + ' ' + item.LastName,
payroll: item.EmployeeNumber
}
}));
}
});
},
search: function() {
// custom minLength
var term = extractLast( this.value );
if ( term.length < 2 ) {
return false;
}
},
focus: function() {
// prevent value inserted on focus
return false;
},
select: function( event, ui ) {
var terms = split(this.value);
var pterms = split($('#RecipientsPayrollNo').val());
// remove the current input
terms.pop();
pterms.pop();
// add the selected item
terms.push(ui.item.value);
pterms.push(ui.item.payroll);
// add placeholder to get the comma-and-space at the end
terms.push( "" );
pterms.push( "" );
this.value = terms.join( ", " );
$('#RecipientsPayrollNo').val(pterms.join( ", " ));
return false;
}
});
Однако в Firefox это работает нормально, но в IE8 значения в скрытом поле полностью заменяются каждый раз, когда в исходном текстовом поле выбирается новое значение, хотя исходное текстовое поле работает так, как должно.
Мой jQuery не самый лучший в мире, поэтому некоторые из вышеперечисленных - это догадки и из документации.
Я думаю, что что-то не так с линией $('#RecipientsPayrollNo').val(pterms.join( ", " ));
, но я не совсем уверен, что.
Если кто-нибудь может помочь, это будет высоко ценится.