簡體   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