谁知道如何在不使用提交按钮的情况下触发表单中的标准HTML5验证?(JavaScript或jQuery).
我不希望发送POST/GET的请求,只能做验证.
我正在尝试使用HTML5客户端验证(即在表单内),但无法看到如何以编程方式显示验证错误气泡.

考虑以下:
<form id="myForm">
<input type="text" id="number" min="1" max="10" step="3" required>
</form>
Run Code Online (Sandbox Code Playgroud)
如果存在规范submit按钮(即<input type="submit">),并且存在验证错误,则用户代理将暂停提交并向用户显示UI:

但是,如果用户不是使用submit输入,而是单击执行javascript的锚点(即ASP.net Webforms):
<a href='javascript:SaveChanges()'>Save Quantity</a>
<script>
function SaveChanges()
{
var form = document.getElementById('myForm');
if (form === null) return;
if (!form.checkValidity())
{
//We reach here, but no UI is displayed
return;
}
form.submit();
</script>
Run Code Online (Sandbox Code Playgroud)
问题在于
form.checkValidity();
Run Code Online (Sandbox Code Playgroud)
不检查表格的有效性(返回false,如果它是无效的),它不会触发用户界面显示.
现在我们有了问题.提交通过
<input type="submit"> 工作(停止并显示UI)<button type="submit> 工作(停止并显示UI)form.submit 不起作用(不停止;不显示UI)form.checkValidity() 不起作用(不显示UI)如何以编程方式显示HTML5客户端表单验证错误气泡?
是否可以在没有表单标签的情况下触发浏览器内置的 html 5 验证过程?如果我的输入控件在不使用表单标签的情况下无效,我想显示浏览器错误消息。我知道我可以使用checkValidity函数检查验证,但如何告诉浏览器触发验证过程?
如果通过 JavaScript 设置值, HTML5 checkValidity()/reportValidity()方法似乎不起作用。
考虑这个例子(JSFiddle):
<input id="text-field" maxlength="3" placeholder="Max len: 3 chars" />
<button id="set-field-value">Set</button>
<button id="check-valid">Is valid?</button>
<script>
window.onload = function() {
var textField = document.getElementById('text-field');
document.getElementById('set-field-value').onclick = function() {
textField.value = 'This is a very looooooooooooooooooooooooooooooong text';
};
document.getElementById('check-valid').onclick = function() {
window.alert(textField.checkValidity());
};
};
</script>
Run Code Online (Sandbox Code Playgroud)
如果单击该Set按钮,输入字段的值将设置为无效值(长度大于 3 个字符),但该checkValidity()方法仍然表明输入有效(在 Chrome、Edge 和 Firefox 上检查)。
为什么?有没有办法确定该字段是否有效,即使其值是通过代码设置的?