OnBlur导致单击提交按钮两次

时间:2013-08-02 03:50:57

标签: php javascript validation submit onblur

我有一个通过ajax进行客户端js验证的表单。 它是一个简单的发送电子邮件(联系)表单,包含3个字段,名称,电子邮件和消息。如果您尝试在没有正确验证的情况下单击提交,则会显示错误消息div。这3个输入中的每一个都通过onblur调用js函数。如果我尝试输入正确的输入然后单击提交一次,它就不起作用。再次点击它就可以了。

为什么我需要从该字段中取消焦点,以便onblur验证函数处理然后提交。这似乎应该是一个常见的问题。提交调用php脚本,该脚本进行ajax调用以验证3个字段,如果正确,则在显示“成功”消息时提交电子邮件。

知道我应该如何停止这个双击提交按钮?

我没有提供代码,因为我认为它会使这个时间过长,但是为了帮助.. 3个字段如果错误则返回false,如果好则返回true,那么php脚本只检查2个字段,如果它们是空的并且电子邮件字段,如果通过正则表达式正确格式化。然后如果是这样使用邮件功能,然后在div中打印“success”。

3 个答案:

答案 0 :(得分:0)

我认为除了(点击提交时),标记提交被点击,然后在验证器回调中,如果一切有效,检查标志,如果已设置,则提交表单。

document.formname.submit();

答案 1 :(得分:0)

我刚刚解决了这个问题。 Onblur绝对是个问题。按下每个键后,我将onblur更改为onkeyup,重新验证所有内容,因此一旦我尝试单击“提交”,它已经验证了输入客户端,它立即运行服务器端脚本。
感谢大家的所有投入。

答案 2 :(得分:0)

你可以使用

$(document).ajaxComplete(function(){
                form.submit();     
                });

将等待任何ajax请求完成。