如果单击按钮,如何停止执行文本框事件更改方法

本文关键字:事件 方法 文本 执行 按钮 单击 何停止 如果 | 更新日期: 2023-09-27 18:13:12

我清除所有控件在文本框改变的事件,但我需要如果从文本框出来后,直接点击按钮。不应该触发重置/清除方法。我使用Java脚本在单击按钮时传递值。如果单击按钮,值不会更改为true。如果在文本框单击按钮后直接触发按钮事件。如果自动回发使文本框为真,它的工作,但我需要与邮箱为真。

aspx.cs

 protected void txtRegno_TextChanged(object sender, EventArgs e)
    {
        if (HiddenField1.Value == "false") // No Button1_Click
        {
            Clear();
        }
        else // button1_click
        {
            HiddenField1.Value = "true"; // reset the hiddenfield1 value
        }

    }
javascript

 <script type="text/javascript">
    function setButtonClicked() {
        document.getElementById('<%= HiddenField1.ClientID %>').value = 'true';
    }
</script>

aspx按钮和文本框

  <asp:TextBox ID="txtRegno" runat="server" OnTextChanged="txtRegno_TextChanged" AutoPostBack="true"
                MaxLength="10"></asp:TextBox>
  <asp:HiddenField ID="HiddenField1" runat="server" Value="false" />
            <asp:Button ID="btnSubmit" runat="server" Text="Check" 
            onclick="btnSubmit_Click" OnClientClick="setButtonClicked();"  />

如果单击按钮,如何停止执行文本框事件更改方法

我不知道这是"正确"的答案,但这对我来说是有效的。

我创建了一个全局变量isSave,并将其初始值设置为false。然后在mouseover事件中,我将该变量设置为true。像这样…

var isSave = false;
$(document).ready(function () {
    $("#buttonDiv").on("mouseover",
        function () {
            window.onbeforeunload = null;
            isSave = true;
        });
    $("#buttonDiv").on("mouseout",
        function () {
            window.onbeforeunload = Changes;
            isSave = false;
        });
})

然后在调用文本字段onChange的函数中,我对值进行检查并返回该值。

function txtExpChange(txt)
{
    // Do stuff
    return isSave;
}

如果你需要函数不处理任何东西,只要把它全部包装在If语句中。

function txtExpChange(txt)
{
    if (!isSave)
    {
        // Do stuff
    }
    return isSave;
}

要点是,由于鼠标悬停与onchange事件分开发生,因此它将独立设置变量。我想这样做的缺点是,当你将鼠标悬停在包含按钮的div上时,如果他们点击tab键。

我希望有一个更好的解决方案,但在我找到它之前,这将不得不为我工作。

祝你好运!

当您将注意力集中在文本框txtRegno上,然后用鼠标点击按钮,OnTextChanged事件在OnClientClick事件之前触发,因此发生回发,表单被提交,隐藏字段设置为初始值false

当您查看所呈现页面的源代码时,您将看到OnTextChanged事件及其处理程序被转换为离开输入框后触发的javascript change事件。

您需要自己在客户端处理文本框的change事件。