繁体   English   中英

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

[英]how to stop executing text box event changed methods if button clicked

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

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 ,然后用鼠标单击按钮时,将在OnClientClick事件之前触发OnTextChanged事件,因此发生回发,并且表单的提交将隐藏字段设置为false ,这是初始值。

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

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

暂无
暂无

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

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