Javascript jQuery event.preventDefault()在Firefox中不工作(包括JSFIDLE)

Javascript jQuery event.preventDefault()在Firefox中不工作(包括JSFIDLE),javascript,jquery,firefox,google-chrome,jsfiddle,Javascript,Jquery,Firefox,Google Chrome,Jsfiddle,这与这里的其他一些类似,但我认为我在本例中正确地使用了event.preventDefault() 下面是一个JSFIDLE,您可以使用它查看代码: 基本上,单击Submit按钮 在Chrome中:什么都没有发生-正确的响应 在Firefox中:重新加载页面,哦,不 那么,为什么在Firefox中重新加载页面而不是在Chrome中?我一直在对它进行Firebugging,并且没有出现任何错误…代码中的变量事件未初始化 摘录: $('#ajaxsearch').click(function(e

这与这里的其他一些类似,但我认为我在本例中正确地使用了
event.preventDefault()

下面是一个JSFIDLE,您可以使用它查看代码:

基本上,单击Submit按钮

在Chrome中:什么都没有发生-正确的响应

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


那么,为什么在Firefox中重新加载页面而不是在Chrome中?我一直在对它进行Firebugging,并且没有出现任何错误…

代码中的变量
事件
未初始化

摘录:

 $('#ajaxsearch').click(function(event) {

        // Stop the Search input reloading the page by preventing its default action
        event.preventDefault();

因为您没有像传递
函数(事件)
那样传递事件对象,但我的问题是,当您可以使
type=“button”
并单击传递值时,为什么还要经历所有这些?本质上,这就是你在整个过程中所做的。

啊,我在过去也遇到过类似的问题。而不是event.preventDefault()尝试将事件传递给:

    function ie8SafePreventEvent(e){
    if(e.preventDefault){ e.preventDefault()}
    else{e.stop()};

    e.returnValue = false;
    e.stopPropagation();        
}

我知道上面写的是IE,但我从来没有遇到过问题,因为=]

与其在submit按钮上查找click事件,不如使用处理程序


只要处理程序末尾有“return false”,页面就不会重新加载。

我这样解决了这个问题,因为我的代码有点不同,这可能对其他人有帮助。我最初的代码是这样的

<form id="enrollstudentform" onsubmit="return enrollStudents()">
    ...
</form>
我必须在函数调用中传递参数事件,并在函数中接收它

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

希望能有帮助。

嘿,我为什么没想到?!干杯我现在使用的是
type=“button”
。我没有使用onclick,因为在更大的范围内,这样做更方便。我可能错了(这与问题无关),但我想知道,
type=“button”
是否将输入键盘触摸识别为提交?不能在jsfiddle上测试它,不能用另一种方式测试它@my work,我很好奇:)当你在文本框上按Enter键时,它不会。但在按钮本身上按Enter键(可能是选项卡式的),它确实会将其识别为submit,并出现
preventDefault()。这就是你的意思吗?:)好的,澄清一下-为了让Enter同时使用文本输入和提交按钮,我将id
#ajaxsearch
分配给
标记,然后运行
$('#ajaxsearch')。提交([…]
-这对他们两个都适用。@杰克:是的,所以这不是真正的用户友好型IMHO。正常人不会关注按钮然后按enter键提交表单。然后,我想知道按钮和
.submit()
处理程序是否可以。在这种情况下,这似乎是一个更好的解决方案(在
表单中没有
操作
(顺便说一句,为什么要使用
表单
然后;)?)不管怎样,禁用JS后,这里没有退路。这在Chrome上起作用的原因是,Chrome通过在触发处理程序之前用当前事件填充
window.event
向IE依赖的站点抛出一根骨头。(还有一个免费引用,比如
事件
——因为您忘了将其包含在事件处理程序签名中,因为——意味着您要回到
窗口。事件
)Firefox不会向IE特定的代码抛出这样的骨骼。非常有用,谢谢T.J。-我从来都不知道。请在问题中发布代码,而不是在JSFIDLE中。啊哈!谢谢你ClemDesm,错过这一点真是太傻了。现在它似乎直接出现在Firebug的错误控制台中……嗯:)我想知道为什么它能在chrome中工作……有同样的问题,这就解决了。@Shikiryu——你救了我,我也在使用函数(e)但错过了它,非常感谢!“这个答案对我有什么帮助?”或者我是这么想的。然后我看了我的代码……顺便说一句,FF(66.0.2)的最新版本不再有这个问题,会像Chrome一样忽略这个问题,但60.x.x仍然如此。这就是我现在使用的,似乎是一个更好的方法。谢谢!我也在使用这个,但“提交”和Firefox一直在发布表单。我不得不改为“点击”,然后它就工作了。这看起来和Shikiryu 5年前给出的答案一样。。。。
<form id="enrollstudentform" onsubmit="return enrollStudents(event)">
    ...
</form>
function enrollStudents(event) {
    // Stop Form.
    event.preventDefault();
    // Other code
}