我测试了谷歌Chrome以下内容:
<!DOCTYPE html>
<html>
<body>
<style>
.valid { color: #0d0; }
.invalid { color: #d00; }
</style>
<div id="output"></div>
<script>
function check(input) {
var out = document.getElementById('output');
if (input.validity) {
if (input.validity.valid === true) {
out.innerHTML = "<span class='valid'>" + input.id +
" is valid</span>";
} else {
out.innerHTML = "<span class='invalid'>" + input.id +
" is not valid</span>";
}
}
console.log(input.checkValidity());
};
</script>
<form id="testform" onsubmit="return false;">
<label>Required:
<input oninput="check(this)" id="required_input"
required />
</label><br>
<label>Pattern ([0-9][A-Z]{3}):
<input oninput="check(this)" id="pattern_input"
pattern="[0-9][A-Z]{3}"/>
</label><br>
<label>Min (4):
<input oninput="check(this)" id="min_input"
type=number min=4 />
</label><br>
</form>
</body>
</html>
Stangely,该<element>.validity.valid
属性似乎正常工作,但调用<element>.checkValidity()
总是返回true,所以它看起来像是一个尚未实现。
你需要调用checkValidity的形式,而不是投入上 – miketaylr 2010-03-11 01:25:26
你在哪里看到的HTTP。。。? //dev.w3.org/html5/spec/Overview.html说checkValidity是HTMLObjectElement上的一个成员函数,并且:“当调用checkValidity()方法时,如果该元素是约束验证的候选者......用户代理必须激发一个名为invalid的简单事件,该事件可以在元素处取消...并返回false。 “ 相同规范将”约束验证的候选对象“定义为”列出的与表单关联的元素是约束验证的候选对象,除非条件禁止约束验证中的元素。“ 似乎应用了输入。 – 2010-03-11 07:02:51
我的理解是在表单上调用checkValidity()将简单地依次委托给它的每个'input's(和'select's'和'textarea's),但我不能说我真的有一个参考 – 2010-03-11 14:11:04