繁体   English   中英

与AutoCompleteExtender一起使用时,OnTextChanged不起作用

[英]OnTextChanged not working when used with AutoCompleteExtender

我有一个文本框,如下所示:

Search:<asp:TextBox runat="server" ID="txtSearchCompany" AutoPostBack="true" OnTextChanged="txtSearchCompany_TextChanged"></asp:TextBox>

我也有一个与文本框链接的AutoCompleteExtender ,如下所示:

<cc1:AutoCompleteExtender ServiceMethod="SearchCustomers" 
            MinimumPrefixLength="2"
            CompletionInterval="100" EnableCaching="false" CompletionSetCount="10" 
            TargetControlID="txtSearchCompany"
            ID="AutoCompleteExtender1" runat="server" 
           CompletionListElementID="autocompleteDropDownPanel"
            >
</cc1:AutoCompleteExtender>

当我从“ AutoComplete列表”中选择某项时,它不会触发onTextChanged事件。 但是,如果我在文本框中键入内容,但未从“ AutoComplete列表中选择一个值,则会触发onTextChanged

有人可以告诉我这是怎么回事吗?

谢谢

据我了解的自动完成逻辑和Textbox控件,它们都无法像您期望的那样一起工作,因为OnTextChanged事件仅在文本框中也键入/更改了某些内容时才触发。 尽管从自动填充下拉菜单中选择了其他值,但此事件无法正常工作。

有此链接,不完全精确,但也指向同一方向。 检查一下。

可能有一些解决方法,当您从下拉列表中选择一个值时,可以通过该方法触发事件。

您可以尝试在JavaScript / jQuery中编写ajax事件,这将在服务器上为此触发一个事件,此后,您可以在服务器上执行逻辑并通过脚本返回数据作为响应。

以这个为例:

jQuery事件更改

这是示例代码:

function autocomplete() {
  $('.control').autocomplete({
      source: function (request, response) {
         // ajax code to perform textChange logic
      },
      minLength: 1,
      change: function (event, ui) { SaveData(); }
  });
}

希望这可以帮助。

使用客户端脚本中的OnClientItemSelected事件触发TextChanged事件

<cc1:AutoCompleteExtender ServiceMethod="SearchCustomers" 
        MinimumPrefixLength="2"
        CompletionInterval="100" 
        EnableCaching="false" 
        CompletionSetCount="10" 
        TargetControlID="txtSearchCompany"
        ID="AutoCompleteExtender1" runat="server" 
        CompletionListElementID="autocompleteDropDownPanel"
        OnClientItemSelected="DoTextChangedPostBack" >
</cc1:AutoCompleteExtender>

<script type="text/javascript" language="javascript">
   function DoTextChangedPostBack(source, eventArgs) {
       var hfield = $get('<%=txtSearchCompany.ClientID%>');
       hfield.value = eventArgs.get_value();
       __doPostBack("<%=txtSearchCompany.ID%>", "TextChanged");
    }
</script>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM