2010-05-25 52 views
51

即:有兩個同名的輸入元素有效嗎?

<form 1> 
<input type="hidden" name="url" value="1"> 
</form 1> 

<form 2> 
<input type="hidden" name="url" value="2"> 
</form 2> 

這是允許的和有效的?

+0

([HTML具有相同名稱的多個隱藏控制元件形式]的可能的複製http://stackoverflow.com/questions/452066/html-form-with-multiple-hidden-control-elements-of同名) – 2016-06-01 21:43:28

回答

32

是的,在你的情況下,它是有效的。試想一下:

這是一個好

<form name="form1"> 
    <input type="hidden" name="url" value="1"> 
</form> 

<form name="form2"> 
    <input type="hidden" name="url" value="2"> 
</form> 

這是不好的

<form name="form1"> 
    <input type="hidden" name="url" value="1"> 
    <input type="hidden" name="url" value="2"> 
</form> 
+8

爲什麼投票? – 2010-05-25 17:57:34

+20

它是有效的。它不會對服務器端語言產生混淆(即使PHP與其命名字段共享名稱的約定,也會一致且可預測地處理不使用該約定的多個輸入)。它不會造成對JavaScript的混淆(這會將元素作爲集合呈現,而**不會忽略其中的一個)。它可能會造成編寫代碼時不知道自己在做什麼的作者的混淆,但根據規範它沒有問題。 – Quentin 2010-05-25 17:58:00

+0

@David Dorward:謝謝你解釋說我刪除了那部分。 – 2010-05-25 18:00:42

9

是的。

更多的是,如果你正在處理單選按鈕組,這是非常重要的。

+0

的確如此。或者使用複選框,在這種情況下,您可以將[]放在末尾「url []」,並創建要拾取的數組。 – 2010-05-25 17:15:24

+2

@Kerry - 這是一個PHPism。大多數表單處理庫都非常樂意爲控件組設置特殊名稱。 – Quentin 2010-05-25 17:56:41

+0

啊,很高興知道。 – 2010-05-25 18:49:52

8

是 - 每個只會提交各自的表格。

如果你有他們在相同的形式,一個會覆蓋另一個,它是無效的。

+10

你錯了。如果你有多個名字相同的輸入,你可以不重寫另一個輸入。所有的輸入將按照它們在html中出現的順序附加到請求的主體。它是有效的:[具有多個隱藏的同名控件元素的HTML表單](http://stackoverflow.com/questions/452066/html-form-with-multiple-hidden-control-elements-of-the-same-姓名) – Mahmoodvcs 2015-07-28 09:26:50

+2

@Mahmoodvcs:這不完全正確。如果表單發佈到PHP服務,則最後一個值會贏。如果您希望將多個值分配給名稱,則每個名稱必須以'[]'結尾。 – 2015-10-07 19:23:05

+4

我們在這裏討論HTML,而不是PHP。 – Mahmoodvcs 2015-10-09 23:00:02

2

爲了測試是否是有效還是無效,在W3C這裏創造您頁和測試:

http://validator.w3.org/

+0

並希望驗證器是無缺陷的:-) – 2016-05-31 21:10:29

6

「這是不好的」在我知道的每個瀏覽器上正確解析;如果兩個url出現在url編碼的字符串中,它將被視爲一個數組。試試這個在JQuery的:

$('<form name="form1">\ 
    <input type="hidden" name="url" value="1">\ 
    <input type="hidden" name="url" value="2">\ 
</form>').serialize() 

,你會得到:"url=1&url=2"

寫得很好的查詢字符串解析器會返回一個JSON結構是這樣的:

{"url":["1", "2"]} 

它是嚴格規範呢?沒有,但是也沒有像上面那樣通過用反斜槓轉義EOL來創建多行字符串。

1
A) 

< form 1> 
< input type="hidden" name="url" value="1"> 
< /form 1> 

and 

< form 2> 
< input type="hidden" name="url" value="2"> 
< /form 2> 

is Okay,beacuse forms submiting time will be different 


B) 

< form 1> 
< input type="hidden" name="url" value="1"> 
< input type="hidden" name="url" value="2"> 
< /form 1> 
is also okay, but not standard coding practice 

JAVA Code two extract both values :: 

Map<String,String[]> parmMap = requestObj.getParameterMap(); 
String input1 = parmMap.get("url")[0]; 
String input2 = parmMap.get("url")[1]; 
相關問題