Javascript 如何在我提交表单时停止onchange事件
我有一个javascript函数,它调用textbox的onChange事件 函数名为callOnChange() 我的文本框就像Javascript 如何在我提交表单时停止onchange事件,javascript,asp.net,Javascript,Asp.net,我有一个javascript函数,它调用textbox的onChange事件 函数名为callOnChange() 我的文本框就像 <asp:TextBox ID="TextBox1" runat="server" onChange="callOnChange(this)"></asp:TextBox> 我还有一个提交按钮 但是,当我单击按钮时,名为first and then submit事件的onchage事件不起作用 那么如何应对呢 我不想在单击提交按钮时调
<asp:TextBox ID="TextBox1" runat="server" onChange="callOnChange(this)"></asp:TextBox>
我还有一个提交按钮
但是,当我单击按钮时,名为first and then submit事件的onchage事件不起作用
那么如何应对呢
我不想在单击提交按钮时调用“onChange”
编辑
实际上,我刚才在上面的问题中给出了一个例子。但我有一系列的文本框,我在其中验证日期。每个文本框日期必须大于其上方文本框,然后再下方文本框将被启用,否则将保持禁用状态。因此,按键或按键事件在这里不会很有用。
onchange
在元素失去焦点(且值已更改)时激发。这是故意的行为
也许您想要一个不同的事件,比如
onkeyup
?据我所知,没有优雅的方法,但简单的方法是使用全局计时器延迟事件,然后单击提交按钮将清除该计时器
为此,首先声明全局变量:
<script type="text/javascript">
var textbox_changeTimer = 0;
function callOnChange(sender) {
//...
}
<script>
var textbox_changeTimer=0;
函数callOnChange(发送方){
//...
}
现在,文本框有这样的代码:
<asp:TextBox ID="TextBox2" runat="server" onchange="textbox_changeTimer = window.setTimeout(function() { callOnChange(this); }, 100);"></asp:TextBox>
最后,点击提交按钮:
<asp:Button runat="server" Text="submit" OnClientClick="window.clearTimeout(textbox_changeTimer);" />
这将在单击按钮时取消onchange事件。如果您有多个提交按钮或需要更优雅的代码,您可以将这些事件挂接到客户端代码中,对所有按钮进行迭代,但这并不重要。您可以像影子向导所说的那样避免更改事件。请记住,如果在更改中显示
警报(“消息”)
,您将取消单击事件。之后,删除警报(“消息”)
尝试console.log(“消息”)
查看事件。(在chrome中按ctrl+shift+j打开javascript控制台)
试试JSFIDLE(不是我的!)Onchange将在文本框中的值发生更改时触发。。。当您离开文本框时会发生这种情况。如果不希望出现这种行为,请尝试使用另一个事件,如onKeyDown?请查找编辑的问题onchange事件触发是否真的有问题?我认为您的问题只是提交事件不起作用……在asp.net中,有大量的验证程序控件,可以很好地用于您的场景。这一切都可以连接到提交按钮。他的问题不是触发的事件。它阻止了点击事件的触发。为什么javaScript不允许同时触发两个事件?非异步?@SubinJacob与synchronous无关,并不是所有的事件,只是特定的
onchange
事件确实会取消表单提交,因为它通常用于验证。模糊事件也会发生同样的情况。即使在默认情况下取消表单提交后,也会发生同样的情况。