Javascript 是否可以取消提交活动?

Javascript 是否可以取消提交活动?,javascript,jquery,Javascript,Jquery,我想阻止表单被提交,并改为执行其他操作(window.location.hrefredirect to pretty printed URL)。但我甚至不能得到阻止表单提交的基本部分 据我所知,这样的事情应该是可行的: $(function($){ $("#search_form").submit(function(e){ console.log("cancelling submit"); return false; }); }); 我还尝试了e.preventDefa

我想阻止表单被提交,并改为执行其他操作(
window.location.href
redirect to pretty printed URL)。但我甚至不能得到阻止表单提交的基本部分

据我所知,这样的事情应该是可行的:

$(function($){
  $("#search_form").submit(function(e){
    console.log("cancelling submit");
    return false;
  });
});
我还尝试了
e.preventDefault()
e.stopPropagation()
,以及它们的各种组合<代码>“取消提交”会打印在Firebug控制台上(因此事件会触发),但不管我做什么,表单都会提交

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

挂接到click事件可能更容易,但表单可以通过多种方式提交-单击按钮、按Enter键,可能还有其他一些我没有想到的事情,所以我尝试只接受submit事件

我正在Firefox中进行测试


编辑:原来是
Search
导致了这种情况。回想起来,这似乎很愚蠢。感谢所有人的帮助。

请将它们一起尝试
返回false
e.StopPropagation()
e.preventDefault()

但更像这样:

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

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

return false;

这使它更符合跨浏览器的要求。

将它们一起尝试
返回false
e.StopPropagation()
e.preventDefault()

但更像这样:

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

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

return false;

这使它更加兼容跨浏览器。

我刚刚在以下位置测试了您的代码:


您提供的代码在该演示中起作用。最有可能的是,您在执行过程中的某个地方出现了错误,从而阻止
返回false正在运行。

我刚刚在以下位置测试了您的代码:


您提供的代码在该演示中起作用。最有可能的是,您在执行过程中的某个地方出现了错误,从而阻止
返回false从运行。

我认为submit()方法的全部要点在于它发生在submit上。根据定义,当事件触发时,表单已经提交,您尝试返回false。是的,@kennis是对的,我相信。是否可以改为调用submit按钮上的click事件?如果存在ohWaitNevermind()方法,则会在浏览器发出http请求之前触发.submit()事件,允许您运行验证、通过ajax处理表单等,然后取消表单提交请求。提供的代码正常工作,但此问题中缺少导致问题的内容。提示:修复.submit()问题很棘手,因为控制台不会在页面之间保持状态。我建议在处理.submit()问题时使用错误控制台(ctrl+shift+j)来诊断任何错误。我认为submit()方法的要点在于它发生在提交时。根据定义,当事件触发时,表单已经提交,您尝试返回false。是的,@kennis是对的,我相信。是否可以改为调用submit按钮上的click事件?如果存在ohWaitNevermind()方法,则会在浏览器发出http请求之前触发.submit()事件,允许您运行验证、通过ajax处理表单等,然后取消表单提交请求。提供的代码正常工作,但此问题中缺少导致问题的内容。提示:修复.submit()问题很棘手,因为控制台不会在页面之间保持状态。我建议在处理.submit()问题时使用错误控制台(ctrl+shift+j)诊断任何错误。