登录到ASP.NET应用程序后,Response.Redirect无法正常工作

时间:2014-09-06 06:58:57

标签: jquery jquery-autocomplete

我有一个与自动完成插件相关联的asp.net文本框。有了这个,我有一个插件的扩展,当用户选择匹配元素而不是选择时,只需按Tab键(模糊)。下面是代码。问题是,第一次模糊事件调用正常,整个功能工作得很好。但第二次,它根本不起作用,它只需要第一个元素的值。

我的情况就是这样。我有一个文本框和一个添加按钮。文本框具有自动完成功能,我输入说克,它填充所有单位。由于gram是数据源中的单位之一,按Tab键将接受,当我按下按钮时,文本gram及其相应的id将被添加到网格视图中。然后文本框将变为空白以添加更多此类条目。问题是,第二次当我输入与自动建议菜单项匹配的内容并按下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 });
                }
            });

请帮助我理解为什么第二次没有开火。

1 个答案:

答案 0 :(得分:0)

如果没有完整的示例,我只能根据描述的行为进行猜测。

尝试使用委托事件进行模糊:

$(document).on('blur', ".ui-autocomplete-input", function (event) {

这将在事件冒泡到不变的祖先元素之后运行jQuery选择器,然后应用选择器,然后将该函数应用于导致该事件的任何匹配元素。这适用于动态更改DOM元素,因此可以解决您的问题。

相关问题