Martin Ille
Martin Ille

Reputation: 7055

How to access element by index name by Jquery?

I have several INPUTs:

<input type="text" name="entry[1]" value="aaa" id="firstEntry" />
<input type="text" name="entry[2]" value="bbb" id="secondEntry" />
<input type="text" name="entry[3]" value="ccc" id="thirdEntry" />

How to get "2" when I know that element id is "secondEntry"?

var name = $("#secondEntry").attr('name'); // name = "entry[2]"

But how to get the index 2 ? I need to know just index (2), not whole name (entry[2]).

Upvotes: 1

Views: 264

Answers (5)

iburlakov
iburlakov

Reputation: 4232

var re = /entry\[(\d{1})\]/;
var index = re.exec(string);

Upvotes: 1

poke
poke

Reputation: 387795

var name  = $("#secondEntry").attr('name');
var index = name.substring( 6, name.length - 1 );

Upvotes: 0

Psytronic
Psytronic

Reputation: 6113

If it is always in that format, ie entry[x], then you could use regular expressions;

var elename = $("#secondEntry").attr('name');
var i = elename.match("entry\\[([0-9])+\\]");
var ind = i[1];

Upvotes: 1

Darmen Amanbay
Darmen Amanbay

Reputation: 4881

You can do the trick using regular expressions.

Upvotes: 0

David Hedlund
David Hedlund

Reputation: 129792

Well the name is just a string, and you'd have to do the rest with string manipulation:

var name = $("#secondEntry").attr('name'); // name = "entry[2]"
name = name.substring(name.indexOf('[')+1); // name = "2]"

// if you want an integer
name = parseInt(name, 10); // name = 2

// if you want a string representation
name = name.substring(0, name.indexOf(']'));  // name = "2"

Upvotes: 5

Related Questions