2013-08-02 43 views
1

我有一个表单,通过ajax做客户端js验证。 它是一个简单的发送电子邮件(联系人)的形式与3个字段,名称,电子邮件和消息。如果你尝试点击提交没有适当的验证,错误味精div变得可见。这3个输入中的每一个都通过onblur调用js函数。如果我尝试输入正确的输入,然后单击提交一次,它不起作用。再次点击,它就可以工作。OnBlur导致提交按钮被点击两次

原因为什么我需要从该领域不重点,以便onblur验证功能处理它提交的内容。这似乎应该是一个普遍的问题。提交调用一个PHP脚本,使ajax调用来验证3个字段,如果正确,提交电子邮件,同时显示“成功”味精。

任何想法如何我应该停止这个双击提交按钮?

我没有提供代码,因为我认为它会使这个太长,但为了帮助.. 3个字段返回假如果不好,如果好,那么PHP脚本只是检查2个字段,如果他们是空的和电子邮件字段,如果它通过正则表达式正确。然后如果是这样使用邮件功能,然后在div中打印“成功”。

+0

为什么不对'submit'本身执行客户端验证,如果你想在用户以生动的方式输入输入时显示错误信息(来自客户端验证),那么最好在'onchange'而不是' onblur' – rps

+1

我不知道,因为我没有代码。顺便说一句,**欢迎来到SO **。你会注意到,在这里数以千计的问题中,大部分都是发布他们的代码。如果没有这一点,还有一点盐,我们不能煮一块面包来挽救我们的生命,好吧,我的。哦,[**先阅读本文](http://stackoverflow.com/help)如果你还没有,这是一个很好的阅读! –

+0

感谢您的答案和阅读材料。通常情况下,我会发布代码,但我认为这将是非常基础的,以显示非常简单的形式调用函数的输入标签,并且返回布尔值的onblur。我将尝试一些我现在刚刚出现的想法... –

回答

0

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

+0

如果网络连接太慢,该怎么办?我不认为你的解决方案和我的解决方案一样可靠。 –

0

我觉得你别无选择(点击提交时),点击提交的标志,然后在验证器回调,如果全部有效,检查标志,如果设置了,然后提交表单。

document.formname.submit(); 
0

您可以使用

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

哪会等到所有Ajax请求完成。