如何停止onchange事件,而我submiting

问题描述:

我有一个JavaScript函数,它是在onChange事件调用文本 函数名的形式是callOnChange() 和我的文本框就像如何停止onchange事件,而我submiting

<asp:TextBox ID="TextBox1" runat="server" onChange="callOnChange(this)"></asp:TextBox> 

,也我有一个提交按钮 ,但当我点击按钮onchage事件先调用,然后提交事件不起作用

那么如何处理呢?

我不想叫“的onChange”当我点击提交按钮

编辑

实际上我刚才给了上述问题的例子。但我有一系列的文本框,我在验证日期。每个文本框的日期必须大于其上面的文本框,然后在文本框下方将被启用,否则它将保持禁用状态。所以keypress或keydown事件在这里将不会很有用。当你失去焦点(并且值改变)时,将触发

+0

如果文本框中值更改平变化将触发... 当你离开文本框出现这种情况。如果你不想要这种行为,请尝试使用另一个事件,如onKeyDown? –

+0

请发现编辑问题 –

+0

onchange事件触发是否真的存在问题? 我认为你的问题只是提交事件不起作用... –

onchange。这是预期的行为。

也许你想要一个不同的事件,如onkeyup

+0

他的问题不是触发的事件。它可以防止触发点击事件。 –

就我所知,没有优雅的方法,但简单的方法是使用全局计时器延迟事件,然后单击提交按钮将清除该计时器。

对于这第一个声明全局变量:

<script type="text/javascript"> 
    var textbox_changeTimer = 0; 
    function callOnChange(sender) { 
     //... 
    } 
<script> 

现在有一个文本框这样的代码:

<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事件。如果您有多个提交按钮或想要更优雅的代码,您可以在客户端代码中挂接这些事件,遍历所有按钮,但这并不重要。

+0

为什么javaScript不允许同时触发两个事件?不是异步的? –

+0

@SubinJacob与同步无关,并不是所有事件都只是特定的'onchange'事件,它确实会取消表单提交,因为它通常用于验证。 –

+0

同样的事情也发生模糊事件。即使在通过preventDefault取消表单提交之后,也会发生同样的情况。 –

您可以像Shadow Wizard所说的那样避免更改事件。请记住,如果您在更改中显示alert("message"),您将取消点击事件。之后,删除alert("message")尝试console.log("message")以查看事件。 (ctrl + shift + j在Chrome中打开javascript控制台)。

尝试this的jsfiddle(不是我的!)