如何停止onchange事件,而我submiting
我有一个JavaScript函数,它是在onChange事件调用文本 函数名的形式是callOnChange() 和我的文本框就像如何停止onchange事件,而我submiting
<asp:TextBox ID="TextBox1" runat="server" onChange="callOnChange(this)"></asp:TextBox>
,也我有一个提交按钮 ,但当我点击按钮onchage事件先调用,然后提交事件不起作用
那么如何处理呢?
我不想叫“的onChange”当我点击提交按钮
编辑
实际上我刚才给了上述问题的例子。但我有一系列的文本框,我在验证日期。每个文本框的日期必须大于其上面的文本框,然后在文本框下方将被启用,否则它将保持禁用状态。所以keypress或keydown事件在这里将不会很有用。当你失去焦点(并且值改变)时,将触发
onchange
。这是预期的行为。
也许你想要一个不同的事件,如onkeyup
?
他的问题不是触发的事件。它可以防止触发点击事件。 –
就我所知,没有优雅的方法,但简单的方法是使用全局计时器延迟事件,然后单击提交按钮将清除该计时器。
对于这第一个声明全局变量:
<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事件。如果您有多个提交按钮或想要更优雅的代码,您可以在客户端代码中挂接这些事件,遍历所有按钮,但这并不重要。
为什么javaScript不允许同时触发两个事件?不是异步的? –
@SubinJacob与同步无关,并不是所有事件都只是特定的'onchange'事件,它确实会取消表单提交,因为它通常用于验证。 –
同样的事情也发生模糊事件。即使在通过preventDefault取消表单提交之后,也会发生同样的情况。 –
您可以像Shadow Wizard所说的那样避免更改事件。请记住,如果您在更改中显示alert("message")
,您将取消点击事件。之后,删除alert("message")
尝试console.log("message")
以查看事件。 (ctrl + shift + j在Chrome中打开javascript控制台)。
尝试this的jsfiddle(不是我的!)
如果文本框中值更改平变化将触发... 当你离开文本框出现这种情况。如果你不想要这种行为,请尝试使用另一个事件,如onKeyDown? –
请发现编辑问题 –
onchange事件触发是否真的存在问题? 我认为你的问题只是提交事件不起作用... –