我对jQuery提交功能有一些疑问。
这是工作环境
jQuery:1.7.2,chrome(18.0.1025.168 m)。
有两个问题。
第一
我的代码就像这样
HTML
<form id="test" action="..." method="post">
<input type="text" />
<input type="submit">
</form>
的jQuery
$('#test').submit(function(){
return false;
})
问题是它在firefox和opera中运行良好但是chrome。
2ST:
html:如上所述。
jQuery的:
$('#test').submit(function(){
if(...)
alert(something..);
return false;
})
它不适用于firefox,opera和chrome。它总是触发form.submit为什么。
我很困惑。谁能搞清楚谢谢!
答案 0 :(得分:9)
请勿使用return false;
。试试这个:
$('#test').submit(function(event){
event.preventDefault();
});
答案 1 :(得分:4)
替换:
$('#test').submit(function(){
return false;
});
使用:
$('form#test').submit(function(event){
event.preventDefault();
});
答案 2 :(得分:2)
如果您不想提交页面,可以使用
onsubmit="return false"
或者如果您希望条件提交也可以使用您拥有的代码。
我认为这个
没有任何问题代码:
$('#test').submit(function(event) {
if(jQuery('#textbox').val() == '') {
alert('Not submitting');
//event.preventDefault(); Not necessary but better
return false;
}
})
答案 3 :(得分:1)
这有时是JS库或自定义代码与提交处理程序行为冲突的结果(例如,有另一个提交处理程序明确提交表单)。
理想的解决方案是调试并找到冲突的代码并解决它。
但作为一种解决方法,可以改为使用提交按钮上的单击处理程序,而不是表单上的提交处理程序。
可以这样做:
<input type="submit" id="btnSubmit">
然后在代码中你可以做
$('#btnSubmit').click(function(){ //Actually we can do 'input[type="submit"]'
return false;
})
然而,如果表单允许通过点击“enter”提交,则必须要小心,因为在这种情况下,单击处理程序的调用可能取决于浏览器和/或基于正在使用的库,请参阅中的注释onsubmit="return false" has no effect on Internet Explorer 7/8 (form is still submitted)关于Dirk Paessler的回答以获取更多信息。
但是为了与浏览器无关,也可以按下“enter”键按下按钮,如下面的代码所示:
document.onkeypress = function(evt) {
var evt = (evt) ? evt : ((event) ? event : null);
var node = (evt.target) ? evt.target : ((evt.srcElement) ? evt.srcElement : null);
if ((evt.keyCode == 13) && (node.type == "text")) {
/*return true or false here based on your logic*/;
}
}
然而,也可以尝试在这个线程中的其他建议,例如直接调用e.preventDefault(),虽然这是Jquery在幕后实际做的,但仍然可能是你的冲突代码没问题