2011-08-26 94 views
2

后我赶上上提交表单的按钮点击。我做event.preventDefault()禁用默认的浏览器动作,所以我可以在点击按钮后做我的东西。我这种情况下,我做AJAX调用服务器。通过服务器的响应,我想选择是否继续提交表单或做其他事情。触发事件event.preventDefault

$inviteSubmitForm.find('input[name="accept"]').click(function(e){ 
    e.preventDefault(); 

    $.ajax({ 
     ... 
     success : function(data) { 

      if (data.something) { 
       ... 
      } else { 
       ... 
      } 

     } 
    }); 
}); 

问题与此是,我无法施展点击按钮的默认操作,COS逻辑在AJAX回调。所以return true只是结束回调函数 - 我不能使用这个简单的技巧。也移动e.preventDefault()是不行,cos表单立即提交。

任何想法?

回答

0

触发提交表单:

$inviteSubmitForm.find('input[name="accept"]').click(function(e){ 
    e.preventDefault(); 

    $.ajax({ 
     ... 
     success : function(data) { 

      if (data.something) { 
       // don't submit 
      } else { 
       $inviteSubmitForm.submit(); 
      } 

     } 
    }); 
}); 
+1

该解决方案是确定和工作,但 - 我有几个形式提交按钮。如果我想通过这种方法区分按钮,我必须在原始提交按钮的名称后面添加。这仍然可以,但我正在寻找一个系统清洁的解决方案 - 改写原始按钮的旧事件。 – srigi

+0

@srigi:为什么你需要一个隐藏的输入字段?你已经在做:'find('input [name =“accept”]')'这应该只是一个'type'按钮。此外,如果你有相同的功能处理多个按钮只需添加一个简单的开关。你想让我为你添加一个例子吗? – PeeHaa

+0

个人而言,我想看看如何在事件级别处理此问题。 –