У меня есть текстовое поле asp.net, связанное с плагином автозаполнения. При этом у меня есть расширение для этого плагина, который автоматически выбирает соответствующий элемент, когда пользователь вместо выбора просто нажимает клавишу вкладок (размытие). Ниже приведен код для этого. Проблема в том, что первый раз размытие событий вызывает правильно, и вся функциональность работает очень хорошо. Но во второй раз он вообще не работает, и он принимает значение только 1-го элемента.Response.Redirect не работает после входа в приложение ASP.NET
Сценарий в моем случае такой. У меня есть текстовое поле и кнопка добавления. Текстовое поле имеет функцию автозаполнения, когда я печатаю слово «грамм», и он заполняет все единицы. Поскольку грамм является одним из единиц в источнике данных, нажатие на вкладку будет принимать это, и когда я нажимаю кнопку, текстовый грамм и его соответствующий идентификатор будут добавлены в виде сетки. Затем текстовое поле станет пустым, чтобы добавить больше таких записей. Проблема заключается в том, что во второй раз, когда я набираю что-то, что соответствует параметру auto, предлагающему пункт меню, и нажмите кнопку Tab, событие размытия не срабатывает.
$(".ui-autocomplete-input").on("blur", function (event) {
debugger;
if ($(this)[0].id == $("#MainContent_TabContainer1_TabpanelNormal_textinput")[0].id) {
$.ajax({
type: "POST",
contentType: "application/json; charset=utf-8",
url: "./AddRecipe.aspx/CheckIfRecipeTitleExists",
data: "{'title':'" + $('#' + 'MainContent_TabContainer1_TabpanelNormal_textinput').val() + "'}",
dataType: "text",
success: function (data) {
var oData = JSON.parse(data);
if (oData.d == "True") {
var textvalue = $('#MainContent_TabContainer1_TabpanelNormal_textinput').val();
alert("Recipe title " + textvalue + " already exists in our database. Please choose another title.");
$('#MainContent_TabContainer1_TabpanelNormal_textinput').val("");
$('#MainContent_TabContainer1_TabpanelNormal_textinput').focus();
}
}
});
}
var autocomplete = $(this).data("autocomplete");
if (autocomplete.selectedItem) { return; }
var matcher = new RegExp("^" + $.ui.autocomplete.escapeRegex($(this).val()) + "$", "i");
autocomplete.widget().children(".ui-menu-item").each(function() {
var item = $(this).data("item.autocomplete");
if (matcher.test(item.label || item.value || item)) {
autocomplete.selectedItem = item;
return false;
}
});
if (autocomplete.selectedItem) {
autocomplete._trigger("select", event, { item: autocomplete.selectedItem });
}
});
Пожалуйста, помогите мне понять, почему второй раз он не срабатывает.
Минимальный пример с HTML, например. в JSFiddle, было бы полезно для такой проблемы –