如何在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>
答案 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);