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

时间:2011-05-08 17:57:07

标签: forms html5 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>

1 个答案:

答案 0 :(得分:10)

好的,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事件绑定到调用checkValidity()方法的函数:

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