jquery click中的警报不会停止提交

时间:2011-04-20 13:04:45

标签: jquery firefox cross-browser

我有

<input onclick="__doPostBack">

$(function(){ 
    $('input').click(function(){ alert('hey') }) 
});

例如,在Chrome中我看到警报,点击“确定”浏览器提交。 在FF4中,我看到一个milisec警报,浏览器提交,而不是等我点击“确定”。

问题:发生了什么? FF4有新的异步事件吗?

这不仅是警报问题,还是防止默认也不起作用。

4 个答案:

答案 0 :(得分:1)

我没有对此进行测试,但我认为它可能有用。

$('input').unbind('click').click(function{
    alert('Hey.');
    __doPostBack();
});

答案 1 :(得分:1)

我们真的不应该依赖alert()comfirm()之类的事件来实际停止执行代码,事实上大多数浏览器都是这样做的。

话虽如此,我不知道为什么会在FF4中发生这种情况,但我的猜测是表单的提交事件实际上是在按钮的单击事件之前发生的。要试用它,请在表单的提交事件中发送警报,看看是否停止提交。

$('input').closest('form').submit(function() {
  alert('Hey');
});

答案 2 :(得分:1)

Firefox 4现在用于页面对话框;这减少了先前版本中模态对话框的烦恼。我假设这是一个HTML / JavaScript的东西,而不是基于操作系统的GUI。如果您不希望表单提交;你可以挂钩表单的提交事件并返回false。事实上,挂钩表单的提交功能可能是最好的选择。希望有所帮助!

答案 3 :(得分:0)

FF中的警报框现在为tab-modal,这意味着它们仅阻止当前页面上的访问(和冻结执行),而不是整个浏览器。显然,这并不会阻止加载不同的页面。

即使这是行为的重大改变,但这可能是有道理的。

根据您的上下文,您可以使用onbeforeunload event向用户显示消息。但是,该对话框将始终具有“确定”和“取消”按钮。