0

我想问这样做是否合法:

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

代替;

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

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

4

2 回答 2

2

它没有任何问题。HTML 规范没有强制要求将文本区域放置在表单中,也没有描述如果不是则要采取的默认操作。仅当您使用默认表单操作时,将项目放置在表单中才有意义。

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

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

于 2012-07-02T05:54:13.303 回答
1

来自HTML5 规范<textarea>

允许的父元素

任何可以包含短语元素的元素。

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

于 2012-07-02T05:54:30.363 回答