jQuery提交功能无法正常工作

时间:2012-05-13 14:00:00

标签: jquery submit

我对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为什么。

我很困惑。谁能搞清楚谢谢!

4 个答案:

答案 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"或者如果您希望条件提交也可以使用您拥有的代码。

我认为这个

没有任何问题

DEMO

代码:

$('#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在幕后实际做的,但仍然可能是你的冲突代码没问题