是否有任何浏览器支持HTML5的checkValidity()方法?

Jam*_*sen 12 javascript browser validation html5

HTML5规范定义了一些非常有趣的验证组件,包括模式(用于验证Regexp)和必需(用于根据需要标记字段).但是,我可以告诉您,没有浏览器实际上根据这些属性进行任何验证.

我找到了跨引擎的HTML5支持比较,但没有关于验证的信息.在我尝试过的浏览器中(Firefox 3.5.8和Safari 4.0.4),没有对象有checkValidity()方法,所以即使我可以定义它们也无法运行验证.

有没有对此功能的支持,所以我可以试验?

mik*_*ylr 8

当然.歌剧和Chromium.但你可以测试自己:

function supportsValidity(){
  var i = document.createElement('input');
  return typeof i.validity === 'object'
}
Run Code Online (Sandbox Code Playgroud)

这是一个指向沙盒的链接,您可以在其中查看Opera和Chrome:http: //jsfiddle.net/vaZDn/light/


Arn*_*rik 6

我在Google 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>
Run Code Online (Sandbox Code Playgroud)

Stangely,该<element>.validity.valid属性似乎正常工作,但调用<element>.checkValidity()总是返回true,所以它看起来还没有实现.

  • 你在哪里看到的?http://dev.w3.org/html5/spec/Overview.html表示checkValidity是HTMLObjectElement上的成员函数,并且:"当调用checkValidity()方法时,如果该元素是约束验证的候选者...用户代理必须触发一个名为invalid的简单事件,该事件在元素处是可取消的...并返回false."相同的规范将"约束验证的候选者"定义为"列出的与表单相关的元素是约束验证的候选者,除非是条件禁止元素进行约束验证." 似乎输入适用. (2认同)