主干:没有有效表单标记的表单



我想问一下这样做是否合法:

<textarea name="message"></textarea>

而不是;

<form><textarea name="message"></textarea></form>

在这两种情况下,Backbone都会处理表单内容,好处就是我不必阻止表单提交的默认行为。我只是不确定这是否是一种"好"的做法。

这没有错。HTML 规范不要求将文本区域放置在表单中,也没有描述如果不是,则要执行的默认操作。仅当您使用默认表单操作时,将项目放置在表单中才有意义。

有两个潜在的问题。第一种是在非语义情况下,即页面内有一个静态的文本区域,没有非脚本操作。 也就是说,如果用户看到您的页面关闭了JavaScript,他们会看到一个无用的文本区域。我假设使用Backbone您正在生成文本区域,这不是问题。

第二个是你正在使用 name 属性。此属性对表单具有特殊含义,并且在表单之外不如 ID 强大。您可能会遇到这样一种可怕的情况,即您的组件被另一个开发人员放置在表单中,并且该值被错误地传递给服务器。这种事情确实会发生。

来自 HTML5 规范的 <textarea>

允许的父元素

可以包含措辞元素的任何元素。

所以是的,你可以在<form>外面放一个<textarea>,不用担心。

最新更新