Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/84.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Html 为什么表单标记中不允许直接使用输入标记?_Html_W3c - Fatal编程技术网

Html 为什么表单标记中不允许直接使用输入标记?

Html 为什么表单标记中不允许直接使用输入标记?,html,w3c,Html,W3c,我刚刚在网站上读到以下内容: 在HTML5之前,非块级元素(如)在标记中不直接有效 我从来没有听说过这样的事情,我看过的每一个基本的HTML教程似乎都可以将输入标记直接放在表单标记中。所以我的问题有三个部分: 上述说法合法吗 为什么会这样?(这仅仅是一个疏忽,还是HTML规范的创建者试图通过创建此规则来防止特定问题?) 使用输入构建表单的推荐方法是什么?(我们是否应该直接在表单标记内创建一个div或一个表?) 首先,我想说的是,HTML教程教你做错事情并不奇怪——HTML实际上是为接受任何和每

我刚刚在网站上读到以下内容:

在HTML5之前,非块级元素(如
)在
标记中不直接有效

我从来没有听说过这样的事情,我看过的每一个基本的HTML教程似乎都可以将输入标记直接放在表单标记中。所以我的问题有三个部分:

  • 上述说法合法吗
  • 为什么会这样?(这仅仅是一个疏忽,还是HTML规范的创建者试图通过创建此规则来防止特定问题?)
  • 使用输入构建表单的推荐方法是什么?(我们是否应该直接在表单标记内创建一个div或一个表?)

首先,我想说的是,HTML教程教你做错事情并不奇怪——HTML实际上是为接受任何和每一种做事方式而设计的。您可以不关闭标记,也可以不正确地嵌套标记等等,这也是我个人使用XHTML的原因之一

这句话似乎是对的,但由于HTML是如何设计的,在实践中并不重要。XHTML可能禁止这样做

表单实际上不是任何类型的容器。HTML规范的创建者似乎很喜欢像块级元素这样的东西,你应该把所有东西都包装在里面。虽然这只是我的观点,但据我所知,如果没有合适的容器,就不应该使用非块级元素。 这就像您不应该在
中放置非块级元素一样。块级元素是其他元素的容器


一个div,一个table–我认为即使是一个
也能做到这一点。

上述说法是正确的。在HTML中,标记不是标记的有效元素。为了使此验证生效,您需要使用或将标记括起来。这将在下面演示

<form action="/" method="post">
    <fieldset>
        Field: <input type="text" name="field" />
        <br />
        <input type="submit" value="Submit" />
    </fieldset>
</form>

字段:


这是标准的学究

  • 就标准而言,该语句是合法的:在HTML4.01中,指定它只能包含块元素或
    。就世界上所有浏览器所允许的范围而言,这是很好的
  • <> Li >我只能猜测他们认为<代码> <代码>根本不是一个布局标签,他们希望所有内联元素都包含在块元素中。
  • 是的,您应该在
    中放置一个
    ,或其他一些块表示元素

根据HTML4.01规范(特别是),这在技术上是正确的。但是,我不知道有哪种web浏览器会给您带来问题。

是的,表单元素的直接子元素必须是块级元素。请看这里:规范中说“表单元素充当控件的容器”和“表单除了表单控件外还可以包含文本和标记(段落、列表等)”,这对我来说太奇怪了,但是他们不允许它直接包含控件。