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

时间:2015-05-24 01:49:26

标签: javascript html5 validation html-form

HTML5 specification州:

  

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

验证步骤包括:

  

对于field中的每个元素controls,按树顺序运行以下子步骤:

     
      
  1. 如果field不是约束验证的候选者,那么请转到下一个元素。
  2.   
  3. 否则,如果field满足其约束条件,则转到下一个元素。
  4.   
  5. 否则,请将field添加到invalid controls
  6.   

我想知道为什么这段代码没有按预期运行:



'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

<input type=text required id=foo>
<input type=text required id=bar readonly>
<input type=text required id=baz disabled>
&#13;
&#13;
&#13;

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

1 个答案:

答案 0 :(得分:4)

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

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

  

如果是只读

,则必须禁止进行约束验证

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