Я пытаюсь изменить строчные буквы в верхнем регистре, когда пользователь вводит в поле ввода. Затем значение поля ввода будет использоваться как ключевое слово для поисковой системы typeahead.Как изменить входное значение перед отправкой в twitter typeahead search engine
Проблема заключается в том, что когда я добавляю прослушиватель событий для typeahead, значение ввода меняется как на верхний, так и на нижний регистр введенной буквы.
$(document).ready(function(){
var suggestionsArray = ["audi", "porsche", "pagani", "mercedes benz", "bmw" , "bugatti"];
var descs = new Bloodhound({
datumTokenizer: Bloodhound.tokenizers.obj.whitespace('value'),
queryTokenizer: Bloodhound.tokenizers.whitespace,
local: $.map(suggestionsArray, function(desc) { return { value: desc }; })
});
var quicksearchInput = $("#in");
// kicks off the loading/processing of `local` and `prefetch`
descs.initialize();
quicksearchInput.on('keypress', function(event) {
var val = this.value;
event = event || window.event;
var charCode = typeof event.which == "number" ? event.which : event.keyCode;
if (charCode && charCode != 13 && charCode != 32 && charCode != 8) {
var keyChar = String.fromCharCode(charCode).toUpperCase();
var mappedChar = keyChar;
var start, end;
if (typeof this.selectionStart == "number" && typeof this.selectionEnd == "number") {
start = this.selectionStart;
end = this.selectionEnd;
this.value = val.slice(0,start) + mappedChar + val.slice(end);
this.selectionStart = this.selectionEnd = start + 1;
$("#dbekar").typeahead('val', this.value);
}
}
})
.typeahead({
hint: true,
highlight: true,
minLength: 0
}, {
name: "noname",
displayKey: "value",
source: descs.ttAdapter(),
templates: {
empty: [
'<div class="empty-message">',
'No matching results found',
'</div>'
].join('\n')
}
});
});
Здесь jsfiddle