jQuery的event.preventDefault()不工作在Firefox(包括JSFiddle)

这是一种类似的复制到这里的其他人,但我想我在这种情况下正确使用event.preventDefault()

下面是一个JSFiddle,你可以看到代码: http : //jsfiddle.net/SeEw2/2/

基本上,点击提交button。

在Chrome中:没有任何反应 – 正确的回应。

在Firefox中 :页面重新加载,哦,不!

那么为什么页面重新加载在Firefox而不是Chrome? 我一直在Firebugging,没有错误出现在…

代码中的variablesevent没有被初始化。

http://jsfiddle.net/SeEw2/4/

摘录:

  $('#ajaxsearch').click(function(event) { // Stop the Search input reloading the page by preventing its default action event.preventDefault(); 

我过去有过类似的问题 而不是event.preventDefault()尝试传递事件到:

  function ie8SafePreventEvent(e){ if(e.preventDefault){ e.preventDefault()} else{e.stop()}; e.returnValue = false; e.stopPropagation(); } 

我知道它说IE,但我从来没有问题,因为=]

因为你没有像function(event)那样传递事件对象,但是我的问题是为什么即使通过所有这些,当你可以使type="button"和onclick传递值? 从本质上说,你在整个过程中所做的事情。

为什么不使用$(form).submit处理程序,而不是在提交button上查找点击事件?

只要您在处理程序结束时返回“false”,页面将不会重新加载。

我这样解决,因为我的代码有点不同,这可能会对其他人有帮助。 我最初的代码看起来像这样。

 <form id="enrollstudentform" onsubmit="return enrollStudents()"> ... </form> 

我的jsfunction看起来像

 function enrollStudents() { // Stop Form. event.preventDefault(); // Other code } 

我不得不在函数调用中传递参数事件,并在函数中接收它

 <form id="enrollstudentform" onsubmit="return enrollStudents(event)"> ... </form> 

js代码:

 function enrollStudents(event) { // Stop Form. event.preventDefault(); // Other code } 

我希望它有帮助。