#javascript #html #jquery
#javascript #HTML #jquery — запрос #jquery
Вопрос:
Я использую для автозаполнения jquery. Фокус ввода сохраняется, когда я выполняю поиск и выбираю. Я не хочу «фокусироваться» при выборе. Поэтому, когда я ищу и выбираю veriseti_ismi_1, перестаньте фокусироваться на вводе. Как я могу сделать это для своего кода?
$(function() {
var availableTags = [
"Veriseti_ismi_1",
"Veriseti_ismi_2",
"Veriseti_ismi_3",
"Veriseti_ismi_4"
];
var $elem = $("#tags").autocomplete({
source: availableTags
}),
elemAutocomplete = $elem.data("ui-autocomplete") || $elem.data("autocomplete");
if (elemAutocomplete) {
elemAutocomplete._renderItem = function(ul, item) {
var newText = String(item.value).replace(
new RegExp(this.term, "gi"),
"<span class='ui-state-highlight'>$amp;</span>");
return $("<li></li>")
.data("item.autocomplete", item)
.append("<div>" newText "</div>")
.appendTo(ul);
};
}
});
$('#tags').on('focusout', function(e) {
let curElem = this;
$('.ui-menu-item').each(function() {
if ($(curElem).val() == $(this).text())
$(this).hide()
});
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
<script src="https://code.jquery.com/ui/1.12.1/jquery-ui.js"></script>
<input id="tags" type="text" />
Ответ №1:
Вы можете просто использовать функцию выбора autoComplete
, чтобы вызвать что-то при выборе искомого текста.
Кроме того, вы также можете обрабатывать, event
например, получать data
вас selected
по вашим тегам, input
а также вы можете ajax
совершать звонки и другие необходимые действия, необходимые для вашей select
функции.
Наконец, чтобы focusout
получить доступ к входным данным, вам нужно использовать функцию размытия() jQuery
из ,,.
Живая Рабочая Демо-версия:
$(function() {
var availableTags = [
"Veriseti_ismi_1",
"Veriseti_ismi_2",
"Veriseti_ismi_3",
"Veriseti_ismi_4"
];
var $elem = $("#tags").autocomplete({
source: availableTags,
select: function(x, i) { //select function
$("#tags").blur(); //focus out
//do other stuff
},
}),
elemAutocomplete = $elem.data("ui-autocomplete") || $elem.data("autocomplete");
if (elemAutocomplete) {
elemAutocomplete._renderItem = function(ul, item) {
var newText = String(item.value).replace(
new RegExp(this.term, "gi"),
"<span class='ui-state-highlight'>$amp;</span>");
return $("<li></li>")
.data("item.autocomplete", item)
.append("<div>" newText "</div>")
.appendTo(ul);
};
}
});
$('#tags').on('focusout', function(e) {
let curElem = this;
$('.ui-menu-item').each(function() {
if ($(curElem).val() == $(this).text())
$(this).hide()
});
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
<script src="https://code.jquery.com/ui/1.12.1/jquery-ui.js"></script>
<input id="tags" type="text" />
Ответ №2:
Вы можете добавить select
опцию к autocomplete
init, которая является функцией и внутри нее может вызывать blur
событие input
:
$(function() {
var availableTags = [
"Veriseti_ismi_1",
"Veriseti_ismi_2",
"Veriseti_ismi_3",
"Veriseti_ismi_4"
];
var $elem = $("#tags").autocomplete({
source: availableTags,
// NEW CODE
select: function( event, ui ) {
$("#tags").blur()
}
// END OD NEW CODE
}),
elemAutocomplete = $elem.data("ui-autocomplete") || $elem.data("autocomplete");
if (elemAutocomplete) {
elemAutocomplete._renderItem = function(ul, item) {
var newText = String(item.value).replace(
new RegExp(this.term, "gi"),
"<span class='ui-state-highlight'>$amp;</span>");
return $("<li></li>")
.data("item.autocomplete", item)
.append("<div>" newText "</div>")
.appendTo(ul);
};
}
});
$('#tags').on('focusout', function(e) {
let curElem = this;
// To see it works
console.log('blurred')
$('.ui-menu-item').each(function() {
if ($(curElem).val() == $(this).text())
$(this).hide()
});
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
<script src="https://code.jquery.com/ui/1.12.1/jquery-ui.js"></script>
<input id="tags" type="text" />