【问题标题】:OnBlur causes Submit button to be clicked TwiceOnBlur 导致提交按钮被点击两次
【发布时间】:2013-08-03 05:28:12
【问题描述】:

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

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

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

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

【问题讨论】:

  • 为什么不对submit本身执行客户端验证,如果您想在用户以生动的方式输入输入时显示错误消息(来自客户端验证),最好在@ 987654323@ 而不是onblur
  • 我不知道,因为我没有代码。顺便说一句,欢迎来到 SO。您会注意到,在这里成千上万的问题中,大多数都发布了他们的代码。没有它,再加上一点盐,我们就不能煮出一条值得拯救我们生命的好面包,好吧,我的。哦,还有Read this first,如果你还没有,这是一本好书!
  • 感谢您的回答和阅读材料。通常我会发布代码,但我认为在一个非常简单的表单中显示调用函数的输入标签太基本了,并且 onblur 返回布尔值。我将尝试一些我刚刚提出的想法......

标签: php javascript validation submit onblur


【解决方案1】:

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

document.formname.submit();

【讨论】:

    【解决方案2】:

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

    【讨论】:

    • 网速太慢怎么办?我认为您的解决方案不如我的可靠。
    【解决方案3】:

    你可以使用

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

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

    【讨论】:

      猜你喜欢
      • 2012-07-26
      • 2018-11-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多