繁体   English   中英

在更正失败的验证后,jQuery表单不会提交

[英]jQuery form doesn't submit after correcting failing validation

我有一个简单的表格,询问您是否确定要提交。

$(document).ready(function(){
  $("form#myform").on('submit', function(e)
  {
      if (!confirm('Are you sure?')){
        e.preventDefault();
      }
      else {
        console.log("submitting...");
      }
   });
});

提交表单,点击“确定”到“你确定”提示,表单提交就好了。

- 刷新页面,清理平板 -

提交表单,点击取消“你确定”提示。 表格未按预期提交。 再次提交表单,点击“确定”到“你确定”的提示,表单仍然没有提交,“提交...”会被记录到控制台。 从这一点开始,表单将永远不会提交,直到我刷新页面并第一次点击提示“确定”。

如果我交换

e.preventDefault();

返回false;

没有任何变化,完全相同的行为

我完全难过了。 我究竟做错了什么?

编辑:这是一个jsFiddle链接https://jsfiddle.net/8ac3Lgzg/ 该小提琴中的HTML和JavaScript与我项目中的代码完全相同/完全相同。 我在上面描述的问题在jsFiddle运行时不会发生,但在我的项目中运行。

你的代码完美无缺,这里有一个jsFiddle演示它。 我实际上是复制和粘贴,必须有一些其他的javascript影响页面上的某个地方。

jsFiddle link below

http://jsfiddle.net/xbhvqvp7/1/

也可能值得检查浏览器网络日志以查看表单是否实际提交

问题出现的原因是我的团队中的另一位开发人员编写了一段我不知道的代码,它附加到每个表单并缓存它的onSubmit处理程序结果。 因为我的表单在验证失败时会返回false,即使它通过了验证,该结果也会被缓存用于下次尝试提交。

不想破坏他的代码,我的解决方案是在我的表单中添加一个属性“no-cache”,并更新了他的方法以检查该属性。 这解决了我的问题。

感谢所有帮助过的人,我非常感谢!

试试这种方式

function SendForm(){
    if (!confirm('Are you sure?')){
        return false;
    }
    else {
        console.log("submitting...");
        return true;
    }
}

把函数sendForm放在这样的提交按钮中

<input type="submit" value="submit" onclick="return SendForm();" />

显然没有在控制台上显示任何内容,因为当您提交表单时,浏览器会重新加载

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM