2012-01-20 29 views
41

什麼是HTML表單上name屬性點?據我所知,你不能在提交時閱讀表單名稱或做任何事情。它有用嗎?HTML表單的`name`屬性有什麼意義?

+3

我花了一段時間來實現你只是想知道的'name'屬性上''

標籤,而不是'name'了'' – mmcrae

回答

43

總之,大概簡化了一點:對於不瞭解document.getElementById的瀏覽器,它被用來代替id

這些天來沒有實際意義。這是從使用name之前的瀏覽器大戰的初期遺留描述如何當一個表單提交和內頁定居id識別元素髮送控制值。

+3

是的,一個真正的答案。謝謝。不知道關於瀏覽器不理解'document.getElementById' ..我想我們可以跳過那些,嗯? –

+0

我一直在懷疑 – Yarin

+2

它仍然有一個目的:'type = radio'和'type = checkbox'需要'name'屬性共享控件名稱(即相同的組)[W3規格](http:// www.w3.org/TR/html401/interact/forms.html#control-name) – charles

10

the spec

name屬性表示forms集合中的form的名字。

+0

Interesting-我從來沒有到內的''屬性標籤在集合之前區分形式 - 也許這是真正的用例? – Yarin

+2

@Yarin - 你可以使用'id'。 – Quentin

+0

@ Quentin-好了,這是另一個superflous使用情況顯然 – Yarin

5

一旦爲元素指定了名稱,就可以在代碼中通過document.name_of_element引用該元素。不工作時也說,當你有相同名稱的多個領域,但它允許像快捷鍵:

<form name="myform" ...> 

document.myform.submit(); 

,而不是

document.getElementsByName('myform')[0].submit(); 
+2

你可以通過ID做到這一點,所以如果這是唯一的用例,它並不重要 – Yarin

+0

@Yarin你可以通過'id'做到這一點嗎? 'document.id'不起作用,除非您爲此目的添加原型方法... – vaxquis

1

可以使用name屬性爲「附加信息」屬性 - 類似於一個隱藏的輸入 - 但這保持紮成的形式的額外信息,這使得它只是一點點簡單的讀/訪問。

+0

不要這樣做。隱藏的輸入包含將被提交給服務器的數據。表單元素的'name'屬性不會。如果您想純粹爲客戶端代碼訪問提供額外的數據,則爲此目的明確提供'data- *'屬性。 – Quentin

0

這裏是MDN不得不說一下吧:

name
形式的名稱。在HTML 4中,不推薦使用它(應該使用id)。它必須是一個文檔中的表格,而不僅僅是在HTML一個空字符串中唯一5.

(從https://developer.mozilla.org/en-US/docs/Web/HTML/Element/form#attr-name

我覺得稍微有一些混亂,指定它必須是唯一的,非空字符串中的HTML 5,當它在HTML 4被棄用(我猜如果指定了name屬性在所有的要求僅適用?)。但我認爲可以肯定地說,它曾經服務的任何目的已經被id屬性所取代。

相關問題