【问题标题】:Why is HTML 5 validation triggered if I don't have a HTML 5 doctype?如果我没有 HTML 5 文档类型,为什么会触发 HTML 5 验证?
【发布时间】:2011-06-14 18:15:43
【问题描述】:

我已经遇到过几次了,而且越来越烦人。在 Dojo 中有一个必需的属性来触发表单验证。 HTML 5 现在也使用相同的属性。问题出现是因为 HTML5 不关心 required= 的值是什么 required="anything" 意味着它是必需的。

所以在我的表单元素上,如果我已经 required="false" 向 dojo 表明我不希望这个验证。在某些情况下,在 Chrome 和 Firefox 上,HTML 5 验证在该输入字段上运行。

我已经尝试过 HTML 5 novalidate 属性,但似乎如果需要的属性在那里它会忽略它。

我想我应该问一个问题。如何完全禁用 HTML5 验证?或者换一种说法,如果我没有指定 HTML 5 文档类型,为什么会运行 HTML 5 验证。

谢谢

这里是问题的完整示例。在 Firefox 或 Chrome 中打开它

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<body>
  <script language="javascript" type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/dojo/1.4.0/dojo/dojo.xd.js"></script>

  <script language="javascript" type="text/javascript">
    dojo.require("dojo.parser");
    dojo.require("dijit.form.Form");

    dojo.addOnLoad(function () {
      dojo.parser.parse();
    });
  </script>
  <form novalidate="novalidate" dojoType="dijit.form.Form">
  <select required="false" formnovalidate="formnovalidate">
    <option value="" >Please Choose A Category...</option>
    <option value="one" >One</option>
  </select>
  <button type="submit">Save</button>
  </form>
</body>
</html>

【问题讨论】:

    标签: html dojo validation


    【解决方案1】:

    回答你的第二个问题...

    为什么要运行 HTML 5 验证如果 我没有指定 HTML 5 文档类型?

    “HTML5 DOCTYPE”不是一种识别“HTML5 文档”的方法。它只是确保在浏览器中触发标准模式的最短 DOCTYPE(这就是在 HTML5 规范中选择它的原因)。

    此外,没有“HTML5 文档”之类的东西。文档要么用 HTML 编写,要么不用。您可以说您的 HTML 文档包含一些在 HTML5 规范中首次定义的特性(我们可以称它们为“HTML5 特性”)。

    浏览器对具有“HTML5 doctype”的 HTML 文档应用不同的规则。

    【讨论】:

    • 这正确回答了主要问题,谢谢。第二个问题似乎与 Dojo 有关,所以我在那里提交了一个错误。 Dojo Bug Report
    【解决方案2】:

    您可以通过将novalidate 放入您的form 标记或将formnovalidate 放入任何个人input 中来禁用验证。

    【讨论】:

    • 对我不起作用。我的表单标签如下。我看看能不能发个小例子。&lt;form novalidate="novalidate" method="POST" name="form_new" id="form_new" dojoType="dijit.form.Form" enctype="multipart/form-data"&gt;
    • 查看有问题的示例 HTML。 novalidate 在这种情况下不起作用。这可能是一个 Dojo 错误
    • @Dustin Dojo 是您的问题的原因。如果你删除dojoType="dijit.form.Form",我会工作。考虑提交bug report...
    猜你喜欢
    • 2011-02-24
    • 2011-12-21
    • 2015-07-04
    • 1970-01-01
    • 2016-01-06
    • 2021-05-23
    • 2014-12-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多