【问题标题】:Avoiding repetition with <label>使用 <label> 避免重复
【发布时间】:2011-06-21 07:23:24
【问题描述】:

当我编写表单时,我发现自己在做一些非常重复的输入。例如,如果我在一个表中排列多个&lt;input&gt;s,我可能会写

<tr>
  <td><label for="repeat">Repeat:</label></td>
  <td><input id="repeat" name="repeat"></td>
</tr>

其中第三个"repeat" 用于 GET/PUT 表单提交,第一个和第三个相互关联,第三个用于 DOM 访问,第二个用于(人类)阅读器。

如果我避免将各种输入排列在一起,那么第一个输入的需求就消失了:

<p><label>Repeat: <input id="repeat" name="repeat"></label></p>

但通常我会被要求让他们排队。

一般来说,我认为代码中的重复 (DRY) 是一件坏事,所以即使这是很小的事情,我也想问问是否有更好的方法。就目前而言,我有四个拼写错误的机会,其中三个是面向用户的,两个如果输入错误会导致程序问题。

【问题讨论】:

    标签: forms html dry code-duplication


    【解决方案1】:

    如何使用 CSS(宽度或其他东西)排列并继续使用您的代码而不是表格和 tds。

    【讨论】:

    • 我不太确定该怎么做,因为我不知道先验标签需要什么宽度(或者它们是否必须换行,等)。
    • @Charles:但是硬编码表和标签是如何解决这个问题的呢?
    • @reinierpost:表格会自动调整大小以适应其内容。我不知道如何在 CSS 中模仿它——除非可能通过在 CSS 中制作表格,这似乎也不正确。
    • @Charles:这取决于调整大小的约束。我不知道如何用 CSS 复制表格的事情是自动对齐列和行,而对单元格的高度或宽度没有任何其他限制。
    • @reinierpost:对,这也是我的立场。
    【解决方案2】:

    嗯,显然你对 html 的冗长是正确的,它并不总是符合 DRY 原则。下一个重复出现在处理表单的服务器端代码中。但是,正如您所说的那样,这些“重复”中的每一个都有自己的含义,并且还可以包含不同的字符串。

    通常我尝试通过不手动编写 html 表单而是使用自动生成 html 表单的 Web 框架(在我的例子中为 Django)来将 DRY 提升到更高的水平。这让你的问题对我来说不是问题。

    【讨论】:

    • 其实我已经完成了这个项目的 HTML 并且正在处理服务器端代码;额外的重复导致我提出这个问题(以一种“下次”的方式)。
    • 好吧,让我再次重复我的框架插件。在我看来,HTML(和其他类似 XML 的语言)不是为手动编辑而设计的。对于组成站点,有dreamweaver 或kompozer(或使用可重复使用的模板构建它),对于交互部分有Web 框架。看看django forms,因为我用了这个,HTML对我来说变得容易多了。
    猜你喜欢
    • 2023-01-13
    • 2013-02-16
    • 2019-02-20
    • 1970-01-01
    • 1970-01-01
    • 2015-09-01
    • 2019-01-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多