forms - 在 Opera 11 中使用 HTML5 客户端表单验证时如何防止表单提交?

标签 forms html validation client-side opera

如何在 Opera 11 中使用 HTML5 客户端表单验证时阻止表单提交?

这是一个示例测试页:

<section>
  <h2>Test</h2>
  <form>
    <input type="text" name="test" id="test" required/>
    <input type="submit" value="Test" />
  </form>
</section>

验证在 Opera 11 中有效,但在输入值后单击按钮时,浏览器会提交表单。

我希望浏览器始终停留在网页上,这对仅客户端脚本很有用,例如在没有服务器的本地硬盘驱动器上。

当我添加 return false; 或试图阻止表单提交时,验证不再有效。

Opera 11.10 Build 2092

编辑:

感谢 robertc 的解决方案,我让它工作了。这是没有使用 jQuery 的测试页面。

 (function() {
   "use strict";

   window.addEventListener("load", function() {
     document.getElementById("testForm").addEventListener("submit", function(event) {
       event.target.checkValidity();
       event.preventDefault(); // Prevent form submission and contact with server
       event.stopPropagation();
     }, false);
   }, false);
 }());
<section>
  <h2>Test</h2>
  <form id="testForm">
    <input type="text" name="test" id="test" required/>
    <input type="submit" value="Test" />
  </form>
</section>

最佳答案

好的,try this .形式基本和以前一样:

<section>
    <h2>Test</h2>
    <form id="form">
        <input type="text" name="test" id="test" required/>
        <input type="submit" value="Test"/>
    </form>
</section>

然后将 submit 事件绑定(bind)到调用 checkValidity() 方法的函数:

function manualValidate(ev) {
    ev.target.checkValidity();
    return false;
}
$("#form").bind("submit", manualValidate);

关于forms - 在 Opera 11 中使用 HTML5 客户端表单验证时如何防止表单提交?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5929186/

相关文章:

ajax - Symfony2。如何允许表单忽略额外的字段?

jquery - 使用 jquery 和 css 的下拉菜单

javascript - 两个 Css 文件具有相同的类 - 从特定类中删除类,如何?

C# 证书固定

javascript - 当您提交表单时,单击的按钮是否也会发布?

c# - 我可以提高 Windows 窗体的分辨率/DPI 吗? (一些扩大控制的方法?)

javascript - 如何将错误/信息 div 与其上方的文本框链接起来

html - 当最大宽度阈值起作用时,按钮内的图标向右移动

javascript - Bootstrap 验证器输入问题

java - Play 框架 (Java) 模型验证 - 对 create() 和 update() 的不同检查