Rohan
Rohan

Reputation: 1657

Is it valid to have two input elements with the same name?

i.e.:

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

and

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

Is this allowed and valid?

Upvotes: 95

Views: 102549

Answers (7)

Jeff Lowery
Jeff Lowery

Reputation: 2597

"This is Not Good" parses correctly on every browser I know of; if two url's appear in the url encoded string, it will be treated as an array. Try this in JQuery:

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

and you will get: "url=1&url=2"

a well-written query string parser will return a json structure like this:

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

Upvotes: 10

Rashid
Rashid

Reputation: 39

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

In PHP you will get values with $_POST['url']

for($i=0;$i<count(url);$i++)
echo $_POST['url'][$i];

Upvotes: 4

Kerry Jones
Kerry Jones

Reputation: 21838

Yes -- each will only submit with their respective forms.

If you have them in the same form, one will override the other and it is not valid.

EDIT: As pointed out by Mahmoodvcs that the overriding only occurs in some languages (such as PHP) as is not inherent within HTML itself.

Upvotes: 5

Aksahy N Shelke
Aksahy N Shelke

Reputation: 21

A) Your first example is okay, because the forms time of submission will be different:

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

B) Your second example is also okay, but not standard coding practice:

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

Java code two extract both values:

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

Upvotes: 1

Web Logic
Web Logic

Reputation:

Yes, it is valid

This is Good

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

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

This is also fine and will generally be interpreted as an array of values, e.g. {url: [1, 2]}, depending on what your server does. In a URL encoding, it will look like url=1&url=2.

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

Upvotes: 88

Farmer
Farmer

Reputation: 10983

To test if it is valid or not, creat you page and test at W3C here :

http://validator.w3.org/

Upvotes: 2

Quentin
Quentin

Reputation: 943207

Yes.

More, it is essential if you are dealing with radio button groups.

Upvotes: 19

Related Questions