2010-11-09 45 views
0

我必须使用在网站的两部分中使用ID生成的表单元素。双ID的W3C验证php

问题的ID被加倍和W3C显示错误

是有办法ommit这个问题?

+1

更改ID? – Gordon 2010-11-09 10:51:52

+0

确切的错误是什么? – sanders 2010-11-09 10:52:17

+0

ID必须相同,错误是ID必须是唯一的 – miojamo 2010-11-09 11:53:41

回答

1

是否有一个特定的原因需要不止一次生成相同的ID?你能不能简单地,如果需要以某种方式,复制两个ID的特定部分,并添加一个额外的唯一标识符?随后可以提取相关部分。

因此,例如,在页面的名称/表单元素的开头/前加上id。

这就是说,这听起来像在这里的方法和方法有问题,是否有任何具体的原因,你不能有不同的ID?

这里看到更多的信息: http://www.w3.org/TR/html4/struct/global.html#h-7.5.2

+0

它与模块内部和内部组件内部放置的形式相同。正在使用模块来优化搜索。 ID的正被用于jQuery – miojamo 2010-11-09 11:55:06

2

分配一个唯一的ID给每个元素或使用name属性。

0

请参考official W3C specs for the id and class attributes。引用:

属性定义

id = name [CS]
该属性分配一个名称的元素。该名称在文档中必须是唯一的。

class = cdata-list [CS]
该属性分配一个类名称或一组类名的给一个元素。任何数量的元素可以被分配相同的类名称或名称。多个类名称必须用空格字符分隔。

正如你所看到的,ID可能不一样。验证器不会接受任何其他内容。这不是可协商的。如果您想创建有效的标记,请将ID更改为唯一。就那么简单。

解决此问题的唯一方法是使用您自己的DTD进行验证,而不要求ID属性是唯一的。当然,它不会是HTML,而是MiojamoML,你必须这样做,你可能会在各种浏览器中遇到一些怪癖,这样做不可行,但事实就是这样。至少如果你想正确地做到这一点。

请注意,如果您的目标是在表单提交的表单元素上使用命名标识符,则应该使用input name attribute代替。该属性不必是唯一的。

0

如果不是完全需要,请勿使用标识。尝试让他们使用名称和类。