2010-11-09 78 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

如果不是完全需要,請勿使用標識。嘗試讓他們使用名稱和類。