【问题标题】:html/javascript onsubmit event not called on form submit to validate formhtml/javascript onsubmit 事件未在表单提交上调用以验证表单
【发布时间】:2018-07-23 05:11:30
【问题描述】:

我想用 html 和 javascript 对表单进行非常基本的验证。

我希望在单击提交按钮时检查一个文本字段,如果检查有效则执行表单的操作,否则不发生任何事情。

由于某种原因,表单的 onsubmit 事件似乎根本没有被触发。

其中一个原因可能是提交按钮一开始是禁用的,但在recaptcha 完成后被recaptcha 回调函数启用。我该如何解决?

这是我的代码(我已将其简化到最低限度以进行测试,但没有任何反应,由于没有弹出窗口警报,因此未调用该函数:

<script type="text/javascript">
   function capcb() {
       document.getElementById("cap_sub").disabled = false;
    };                                 
</script>
<script type="text/javascript">
    function check() {
        window.alert("checking");
        return false;
    }
</script>
[...]
<form action="submitpage.php" method="post" onsubmit="return check()">
  <fieldset>
    <input type="text" name="Email" id="email" maxlength="120" class="input" /></p> 
  </fieldset>
  <div align="center" class="g-recaptcha" data-sitekey="masked" data-size="compact" data-callback="capcb"></div>
  <input type="submit" id="cap_sub" value="Submit!" class="submit"/>
</form>

期待您的建议 !

【问题讨论】:

  • 我不确定你的意思,因为它会为我触发,请参阅this fiddle。请您发布您的完整标记或创建一个小提琴吗?
  • 是的,它也适合我! jsfiddle.net/qkkvcsa7

标签: javascript html forms validation recaptcha


【解决方案1】:

也许是因为你在函数 capcb() 的末尾有一个分号? 因为我尝试了您的代码及其工作。

<script type="text/javascript">
   function capcb() {
       document.getElementById("cap_sub").disabled = false;
    }                                
</script>

【讨论】:

    【解决方案2】:

    我很抱歉。我真的花了 3 个小时才决定在这里问。我终于意识到我的 check() 函数中有一个愚蠢的语法错误 - 完整的,不是我发布的,它导致 call() 函数未定义..修复它并且它可以工作......我是如此习惯于在执行代码之前编译代码,继承这个旧网站作为志愿者维护对于我这样的 cobol coder 来说是一场噩梦:)

    如果我浪费了任何人的时间,我真的很抱歉!

    【讨论】:

      猜你喜欢
      • 2021-03-10
      • 2012-01-26
      • 2015-11-27
      • 1970-01-01
      • 2016-06-24
      • 2013-04-14
      • 2012-04-09
      • 2013-02-19
      • 2011-09-22
      相关资源
      最近更新 更多