可以提交活动被取消吗?

时间:2011-05-04 01:04:36

标签: javascript jquery

我希望停止提交表单,而是执行其他操作(window.location.href重定向到漂亮打印的网址)。但我甚至无法获得阻止表单提交的基本部分。

据我了解,这样的事情应该有效:

$(function($){
  $("#search_form").submit(function(e){
    console.log("cancelling submit");
    return false;
  });
});

我还尝试了e.preventDefault()e.stopPropagation()以及这些的各种组合。 "cancelling submit"被打印在Firebug控制台上(因此事件会触发),但无论我做什么,表单都会提交。

jQuery文档和逻辑意味着它应该可以工作,但事实并非如此。我做错了吗?

挂钩点击事件可能会更容易,但表单可以多种方式提交 - 点击按钮,按Enter键,可能还有其他我没想过的东西,所以我想尝试提交事件。

我正在Firefox中测试它。

编辑:事实证明<button type='submit' onclick='this.form.submit()'>Search</button>导致了这一点。回想起来,这似乎很愚蠢。感谢大家的帮助。

2 个答案:

答案 0 :(得分:4)

我刚刚在http://jsfiddle.net/UZwr5/

测试了您的代码

您提供的代码适用于该演示。很可能你的执行中某处出现了一个错误,导致return false;无法运行。

答案 1 :(得分:1)

一起尝试所有这些return falsee.StopPropagation()以及e.preventDefault()

但更像是这样:

if(e.stopPropagation)
{
    e.stopPropagation();
}

if(e.preventDefault)
{
    e.preventDefault();
}

return false;

这使得它更符合跨浏览器标准。