如果单击按钮,如何停止执行文本框事件更改方法
本文关键字:事件 方法 文本 执行 按钮 单击 何停止 如果 | 更新日期: 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
事件。