我有一个简单的表单,询问您是否确定要提交它。
$(document).ready(function(){
$("form#myform").on('submit', function(e)
{
if (!confirm('Are you sure?')){
e.preventDefault();
}
else {
console.log("submitting...");
}
});
});
提交表单,点击“确定”到“你确定”提示,表单提交就好了。
- 刷新页面,清理平板 -
提交表单,点击取消“你确定”提示。表格未按预期提交。再次提交表单,点击“确定”到“你确定”的提示,表单仍然没有提交,“提交...”会被记录到控制台。从这一点开始,表单将永远不会提交,直到我刷新页面并在第一次点击提示“ok”。
如果我交换
e.preventDefault();
与
返回false;
没有任何改变,完全相同的行为。
我完全难过了。我做错了什么?
编辑: 这是一个jsFiddle链接https://jsfiddle.net/8ac3Lgzg/。该小提琴中的HTML和JavaScript与我项目中的代码完全相同/完全相同。我在上面描述的问题在jsFiddle上运行时不会发生,但在我的项目中运行。
答案 0 :(得分:0)
你的代码完美无缺,这里有一个jsFiddle演示它。我实际上是复制和粘贴,必须有一些其他的javascript影响页面上的某个地方。
jsFiddle link below
http://jsfiddle.net/xbhvqvp7/1/
也可能值得检查浏览器网络日志以查看表单是否实际提交
答案 1 :(得分:0)
问题出现的原因是我的团队中的另一位开发人员写了一段我不知道的代码,它附加到每个表单并缓存它的提交处理程序结果。因为我的表单在验证失败时会返回false,即使它通过了验证,该结果也会被缓存用于下次尝试提交。
不想破坏他的代码,我的解决方案是在我的表单中添加一个属性,#34; no-cache",然后我更新了他的方法以检查该属性。这解决了我的问题。
感谢所有帮助过的人,我非常感谢!
答案 2 :(得分:-2)
试试这种方式
function SendForm(){
if (!confirm('Are you sure?')){
return false;
}
else {
console.log("submitting...");
return true;
}
}
将函数sendForm放在提交按钮中,如下所示
<input type="submit" value="submit" onclick="return SendForm();" />
显然没有在控制台上显示任何内容,因为当您提交表单时,浏览器会重新加载