[英]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.