这是与其他一些类似的副本,但我认为我在这种情况下正确使用event.preventDefault()
。
这是一个JSFiddle,你可以看到代码:http://jsfiddle.net/SeEw2/2/
基本上,点击“提交”按钮。
在Chrome中:没有任何反应 - 正确回复。
在Firefox中:页面重新加载,哦,不!
那么为什么页面在Firefox而不是Chrome中重新加载?我一直在Firebugging它,并且没有任何错误......
答案 0 :(得分:98)
代码中的变量event
未初始化。
提取:
$('#ajaxsearch').click(function(event) {
// Stop the Search input reloading the page by preventing its default action
event.preventDefault();
答案 1 :(得分:9)
啊我过去曾遇到过类似的问题。而不是event.preventDefault()尝试将事件传递给:
function ie8SafePreventEvent(e){
if(e.preventDefault){ e.preventDefault()}
else{e.stop()};
e.returnValue = false;
e.stopPropagation();
}
我知道它说IE,但我从来没有遇到过问题,因为=]
答案 2 :(得分:1)
因为您没有传递像function(event)
这样的事件对象,但我的问题是为什么即使您可以通过type="button"
和onclick传递值来实现这一切?从本质上说,这是你在整个过程中所做的事情。
答案 3 :(得分:1)
为什么不使用$(form).submit处理程序,而不是在提交按钮上查找点击事件?
只要你在处理程序的末尾有'return false',页面就不会重新加载。
答案 4 :(得分:1)
我这样解决了,因为我的代码有点不同,这可能对其他人有帮助。我的初始代码看起来像这样。
<form id="enrollstudentform" onsubmit="return enrollStudents()">
...
</form>
我的js功能看起来像
function enrollStudents() {
// Stop Form.
event.preventDefault();
// Other code
}
我必须 在函数调用中传递参数事件,并在函数 中接收它。
<form id="enrollstudentform" onsubmit="return enrollStudents(event)">
...
</form>
js code:
function enrollStudents(event) {
// Stop Form.
event.preventDefault();
// Other code
}
我希望它有所帮助。