1

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

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

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

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

4

3 回答 3

0

我认为您别无选择(单击提交时),标记提交已单击,然后在验证器回调中,如果一切都有效,请检查标记,如果已设置,则提交表单。

document.formname.submit();
于 2013-08-02T03:58:50.177 回答
0

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

于 2013-08-02T19:45:36.080 回答
0

你可以使用

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

它将等到任何 ajax 请求完成。

于 2013-11-16T12:34:35.387 回答