HTML5中约束验证的只读元素候选

rin*_*t.6 3 javascript forms validation html5

HTML5规范状态:

一个可提交元素是约束验证候选者,除非条件禁止该元素进行约束验证。(例如,如果元素是元素,则禁止进行约束验证object。)

验证步骤包括:

对于每个元素fieldcontrols树中的顺序,运行下面的子步骤:

  1. 如果field不是约束验证的候选者,则转到下一个元素。
  2. 否则,如果field满足其约束条件,则继续进行下一个元素。
  3. 否则,添加fieldinvalid controls

我想知道为什么此代码无法按预期工作:

'use strict';

alert(document.getElementById('foo').willValidate); // expected: true; true
alert(document.getElementById('bar').willValidate); // expected: true; false
alert(document.getElementById('baz').willValidate); // expected: false; false

alert(document.getElementById('foo').checkValidity()); // expected: false; false
alert(document.getElementById('bar').checkValidity()); // expected: false; true
Run Code Online (Sandbox Code Playgroud)
<input type=text required id=foo>
<input type=text required id=bar readonly>
<input type=text required id=baz disabled>
Run Code Online (Sandbox Code Playgroud)

这是用户代理实施中的错误还是预期的?

Joh*_*ong 5

在这里看看:http : //www.w3c-test.org/html/semantics/forms/constraints/form-validation-willValidate.html

a input的条件之一type='text'是:

如果为只读,则必须禁止约束验证

仅供参考:假设readonly元素已经包含一个值,通常不需要该required属性。