2009-06-11 60 views
1

我在我的页面中有一个确认步骤。jQuery Forms - Ajax和正常提交相同的表格

所需的操作:

  • 用户点击“提交”和AJAX请求时,做适当的行动,并返回一个确认对话框

  • 用户“确认”,然后提交表单使用标准帖子。

所以对于第一部分我没事使用jQuery表单插件:

$('form').ajaxForm(...options...); 

因为我想再次提交表单的第二部分,但非Ajax。基本上我想这样做:

$('form').submit(); 

并让它做一个实际的浏览器文章。问题是$('form')。submit()只是触发ajax提交。

有没有一种方法可以将表单用于两个目的?

+1

$( '表单的提交按钮')点击()..does的工作,为第二。提交? – Surya 2009-06-11 14:26:35

+0

是的,这是有效的,但工程,我很高兴。 – anonymous 2009-06-11 14:41:14

回答

2
$('forms-submit-button').click() 

..是否工作,第二次提交?

:) :)

0

在ajax发布结果后,你不能只注销提交事件处理程序吗?顺便说一下,为什么你需要两次发布相同的数据?如果Ajax文章和常规文章之间的数据没有发生变化,为什么需要常规文章?

+0

两个要求: 1)确认步骤是需要 2)我要使用现有的数据库 所以我做同样的工作,99%在这两个请求,但只有“真正”的请求时,它仍然存在于数据库。理想情况下,我会保存第一个请求的工作,第二个请求只需要引用已保存的工作,但是a)我不想依赖会话和b)我不能创建一个新的表来保存请求。 – anonymous 2009-06-11 14:46:03

0

您可以尝试更改表单中的值(将某个隐藏值更改为1),再做一次ajax请求并最终执行重定向。它不一样,但它应该工作。 请注意,这是很奇怪的,虽然两次提交相同的数据..

0

由苏里亚回答为注释(如果你再次检查这个问题,请张贴的答案,所以我可以将其标记!)


$('forms-submit-button')。click()..做工作,第二次提交?

0
 
form onsubmit='ajaxCheck();' 
... 
/form script var ajaxCheck = function() { //do check return confirm(); // if ok form submit normaly/if cancel form doesn't submit } /script

或标志的东西:

 
var flag = true; 

var firstCheck = function() 
{ 
    if(flag) 
    { 
     //do the ajax Call which will fire an event, 
     // let's call it onData 
     $.post(url,{param1:val1,...,paramN:valN},onData); 
     return false; 
    } 
    return true; 
} 

var onData = function (data) 
{ 
     flag = !confirm(...); 
     //if user click ok and try to re-submit the form 
     //this time will just go 
}