.NET如何避免在Textbox TextChanged事件后取消Button Click事件

时间:2017-11-09 09:36:10

标签: asp.net vb.net events cancellation autopostback

我有一个使用[OnTextChange]事件(VB.NET)的文本框,并且必须使用[AutoPostBack =" True"]从DB检查自身值:

<asp:TextBox ID="Item1" TabIndex="7" runat="server" AutoPostBack="True"></asp:TextBox>

情景是:

  • 在文本框上输入任何内容,但尚未从文本框中聚焦。
  • 点击该文本框中相同形式的任何按钮。

不需要的结果:

  • 该按钮的事件[On Click]已取消,仅触发了OnTextChange事件。
  • 必须再次点击该按钮。

通缉结果:

  • 按钮的事件[On Click]将在事件OnTextChanged触发后触发

我搜索了谷歌并知道这是.NET事件的一个问题。但仍然没有找到任何有用的解决方案。

请帮忙。

2 个答案:

答案 0 :(得分:1)

如果您正在编写Web应用程序,TextBoxes CaseValidation有一个属性,您可以使用它, 要么 您可以在按钮单击功能中使用文本验证,而不是使用textchanged属性

答案 1 :(得分:0)

我遇到了同样的问题。按钮事件未触发的原因是在处理文本更改事件的子例程中,我不得不重新加载页面。我结合了几种方法并提出了这个似乎有效的解决方案:1)我在页面上添加了一个隐藏字段,用于存储按钮是否被点击的初始值为false的状态; 2)我在按钮上添加了OnClientClick,调用javascript函数将隐藏字段值设置为true; 3)在处理文本更改事件的子程序后面的代码中,我在使用Response.Redirect重新加载页面之前检查隐藏字段的值。以下是代码段:

<asp:HiddenField ID="addtocarthiddenfield" runat="server" Value="false" ClientIDMode="Static" />

OnClientClick="setAddCartClicked();"

<script type="text/javascript">
        function setAddCartClicked() {
            document.getElementById('addtocarthiddenfield').value = 'true';
        }
    </script>

Dim addtocart As Boolean = addtocarthiddenfield.Value


If addtocart = False Then
    Response.Redirect("MyAccount_Favorites.aspx")
End If

我希望这会有所帮助。