没有<form>的<input>格式是否正确?


225

<input>没有它是否有效<form>

有一个标记页面中某些字段的过程,只是找到了一个页面,其中的输入字段没有按我的预期被标记。
我花了一段时间,但得出的结论是,获取表单元素然后获取字段的过程是导致这些表单丢失的原因,因为没有表单。


@Adriano-完全是我的想法。只是运行通过看看!
加布里埃尔·赫尔利

1
当然是w3c验证程序,我真的应该在后面加上一个解释,解释为什么会很好。
格雷格·多姆扬

我的意思是,它可能对某些版本的html有效,但对其他版本无效,在这种情况下,验证器比仔细阅读标准要快得多。
阿德里亚诺·瓦罗利广场

Answers:


200

<input>如果没有,则<form> 显示为有效,是(至少对于html 4.01,请看17.2.1的结尾):

用于创建控件的元素通常出现在FORM元素内部,但是当它们用于构建用户界面时也可能出现在FORM元素声明之外。有关内在事件的部分将对此进行讨论。请注意,窗体外部的控件不能成为成功的控件。


7
为了能够将表单数据提交到服务器(不包括Ajax)。
Ludovic Kuty 2013年

5
@PhilipSmith我知道您的评论是很久以前写的。但是,为什么您认为这是奇怪或毫无意义的呢?如果控件未与服务器通信,为什么还要创建一个表单?
亚当·贝克

18
什么是“成功控制”?
AlikElzin-kilaka 2015年

22
提交表单进行处理时,某些控件的名称与当前值配对,并且这些对与表单一起提交。提交名称/值对的那些控件称为成功控件。 w3c
SantiBailors 2015年

3
@ adam-beck例如,某个AngularJS网站处理输入,处理数据并将其发送到api。表单的HTML模板可以不带任何表单标签而编写,并且可以与服务器通信。
sr9yar

75

我使用W3C验证器检查了以下内容,并确认这是有效的。

<!DOCTYPE html>
<html>
<head>
  <title>test</title>
</head>
<body>
  <input type='text' />
</body>
</html>

6

参考最新规范:

HTML 5.2-W3C建议(2017年12月14日)

与表单相关的元素可以与元素具有关系<form>,这称为元素的表单所有者。如果与表单相关的元素未与某个<form>元素相关联,则称其表单所有者为null。


4

根据MDN,有可能:

请注意,始终可以在元素外部使用表单窗口小部件,但是如果您这样做,则该表单窗口小部件与任何表单都无关。此类小部件可以在表单外部使用,但是您应该为此类小部件制定一个特殊的计划,因为它们自己不会执行任何操作。您将必须使用JavaScript自定义其行为。

HTML5在HTML表单元素上引入了form属性。它应该让您显式地将元素与表单绑定,即使该元素未包含在form标记中也是如此。不幸的是,目前,跨浏览器实现此功能还不足以依靠它。


2

我知道这个问题已经很老了,但是,我已经成功地构建了许多没有表单标签的复杂数据输入页面。尽管许多人不认为它是“标准”,但使用不带的输入也不是不适当的<form>。在我的项目中,我需要完全控制页面的行为以及默认表单的行为受到阻碍的实例。能够执行页面和字段级别的验证(使用JS)并通过Ajax调用等“提交”数据……事实上,这是我最近的首选方式。

需要大量的JS,但是它并不那么困难,并且很容易作为可重用的代码来完成。

在其他情况下,我定义我不使用带有输入的表单(例如登录页面)。

希望这个推荐能对某人有所帮助。


1

是的,您可以输入不带表格的有效输入。


14
好吧,您可以在“是”后面添加一些证据。或说明适用于哪个HTML版本。不过,我不会对你失望。
阿德里亚诺·瓦里

9
因此,根据您的基本原理,如果用户可以直接进入W3并亲自进行查找,为什么还要根本没有SO?我也不会拒绝您的意见,但我必须同意,以清晰简洁的方式提供更多解释的人会受到欢迎,因为在SO方面,解释和正确答案是最有用的。
Mattygabe 2011年

-10

当然可以

document.getElementById('your_input_id').validity.valid

动态检查字段的有效性。


31
这与标记有效性无关,而是与约束验证API有关。这个答案是如何获得8次投票的,这超出了我的范围。
user247702 '16
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.