Ajax AutoCompleteExtender文本框未在边缘浏览器中触发文本更改事件

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Ajax AutoCompleteExtender文本框未在边缘浏览器中触发文本更改事件相关的知识,希望对你有一定的参考价值。

我在文本框(ASP.NET)上使用Ajax AutoCompleteExtender,我已经连接了文本更改事件。当我输入文本框时,系统能够从asmx方法成功获取数据,但与自动完成文本框关联的文本更改事件不会被触发。这只发生在Edge浏览器中。我用chrome和IE测试了网站,它的工作非常好。当我升级到最新版本的Ajax Control Kit时,添加此问题就开始出现了。当我单击提交按钮时,文本更改事件也会被触发(边缘)。这类似于文本更改事件在触发其他事件时被触发。

以下是代码段。

<asp:TextBox ID="AutoTxtCompany" runat="server" aria-describedby="ContentPlaceHolder1_rfvCustomerCompany" AutoPostBack="true" CssClass="ui-autocomplete-input ui-widget ui-widget-content comboBoxDimensionsTextBox" OnTextChanged="AutoTxtCompany_TextChanged" aria-required="true" />  
<asp:AutoCompleteExtender ID="autoextAutoTxtCompany" BehaviorID="autoextcompanyautocomplete" runat="server" TargetControlID="AutoTxtCompany" MinimumPrefixLength="1" EnableCaching="false"
CompletionSetCount="5000" CompletionInterval="100" ServiceMethod="getCompanyList"                       CompletionListCssClass="autocomplete_completionListElement" ServicePath="~/FrontEnd/AutoComplete.asmx" UseContextKey="true" FirstRowSelected="true">
</asp:AutoCompleteExtender>
答案

尝试使用AutoCompleteExtender控件的OnClientItemSelected事件来触发Textbox TextChanged事件。像这样的代码:

<script type="text/javascript" >
    function DoTextChangedPostBack(source, eventArgs) {
        var hfield = $get('<%=AutoTxtCompany.ClientID%>');
        hfield.value = eventArgs.get_value();
        __doPostBack("<%=AutoTxtCompany.ID%>", "TextChanged");
    }
</script>
<div>           
    <asp:ScriptManager ID="ScriptManager1" runat="server"></asp:ScriptManager>
    <asp:TextBox ID="AutoTxtCompany" runat="server" aria-describedby="ContentPlaceHolder1_rfvCustomerCompany" 
        AutoPostBack="true" CssClass="ui-autocomplete-input ui-widget ui-widget-content comboBoxDimensionsTextBox" 
        OnTextChanged="AutoTxtCompany_TextChanged" aria-required="true" />  
    <ajaxtoolkit:autocompleteextender id="autoextAutoTxtCompany" behaviorid="autoextcompanyautocomplete" runat="server"
        targetcontrolid="AutoTxtCompany" minimumprefixlength="1" enablecaching="false"
        completionsetcount="5000" completioninterval="100" servicemethod="getCompanyList" 
        completionlistcssclass="autocomplete_completionListElement" servicepath="FrontEnd/AutoComplete.asmx" 
            OnClientItemSelected="DoTextChangedPostBack" 
        usecontextkey="true" firstrowselected="true">
    </ajaxtoolkit:autocompleteextender>
</div>

以上是关于Ajax AutoCompleteExtender文本框未在边缘浏览器中触发文本更改事件的主要内容,如果未能解决你的问题,请参考以下文章

AutoCompleteExtender 有时有效

Webkit 中的 AutoCompleteExtender 位置错误

在 OnClientItemSelected Javascript 函数中获取 AutoCompleteExtender 的 TargetControlId

弹出自动完成时如何触发 JavaScript 函数?

填充数据源,列表视图绑定但显示 EmptyDataTemplate

asp.net ajaxtoolkit 自动完成功能不起作用