2011-05-16 52 views
2

我需要一些代码在提交按钮被点击之后并且在表单实际提交之前运行。 我已经剥离了代码,只留下了显示问题所需的部分。 我需要的代码是去提交函数,但不是提交表单再次调用函数。 表单只应在第二次迭代中提交。 除外。代码完全按照它应该执行的方式执行,但表单最终没有提交。递归jQuery提交功能不提交表格

如果有人能解释为什么,我将不胜感激。

下面的代码(simplr-REG的窗体的名称):

​​
+0

你怎么知道它没有提交? – Neal 2011-05-16 20:21:00

+0

@Neal,我正在使用一个WordPress网站注册插件,当表单提交时,我收到一条消息,表明它已成功提交。在这种情况下,我不这样做。我还检查数据库以查看是否添加了新记录。 – Ash 2011-05-16 20:56:04

回答

3

更改它从一个“提交”事件的“click”事件,并将其附加到按钮本身,而不是形式?

ETA:请务必在未提交的案例中“返回false”。

$("#simplr-reg-submit").click(function() 
{  
     alert("1st iteration"); 
     $("#simplr-reg").submit(); 
     return false; 
}); 
+1

对于他来说,为按钮添加点击事件可能会更好(任何不会自动提交的事件),然后在完成其他功能后只需调用表单提交事件。不需要使其成为“递归” – jacobangel 2011-05-16 20:28:24

+0

确实如此,但如果一切已经创建(即自动生成的形式),请单击w/return false即可。 – SickHippie 2011-05-16 20:34:17

+0

http://jsfiddle.net/fcgJV/ – kei 2011-05-16 20:38:39

4
$("#simplr-reg").submit(); 

,说: “叫上了jQuery选择submit方法”。你有一个绑定到选择的jQuery submit处理程序。既然你已经触发了jQuery选择的事件,那么jQuery处理程序也会被触发。

如果您在本机DOM表单对象(提交处理程序中的this)上触发事件,那么jQuery处理程序将不会被触发,因此您不会绕圈。拨打form.submit方法:

this.submit(); 
+0

@ lonesomeday,谢谢。它似乎与我在问题中显示的代码一起工作。但是在我的完整代码中,第一个提交函数调用了另一个函数,最后我应该调用第二个提交函数。但它不承认那里的'这个'运营商。我能做什么? – Ash 2011-05-16 21:30:19

+0

@Ash'$('#simplr-reg')。get(0).submit();'''get'](http://api.jquery.com/get)检索本地DOM元素,所以你可以调用本地'submit'方法。 – lonesomeday 2011-05-16 21:33:45

+0

@lonesomeday,它仍然没有提交。我已经把脚本放在这里(http://www.mediacoverages.com/newscript/),如果你可以看一看,那将是非常棒的。另一个名为“codeAddress”的功能是黄色的,但不需要全部通过。就在它结束的地方,我再次提交提交。 – Ash 2011-05-16 21:55:09