2010-01-19 51 views
1

我有几个输入:如何通过jquery按索引名访问元素?

<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" /> 

如何获得 “2” 时,我知道,元素ID为 “secondEntry”?

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

但是如何获得索引2? 我只需要知道索引(2),而不是全名(entry [2])。

回答

5

好名字只是一个字符串,你必须用字符串操作做休息:

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" 
1

如果它始终采用该格式,即entry [x],那么您可以使用正则表达式;

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

如果你想它作为一个数字,'VAR IND = parseInt函数(I [1])'。但从正则表达式中删除“条目”,因此它不易碎(不会因名称更改而中断)。 – 2010-01-19 11:12:59

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

授予他的示例数据,但*哇*它是脆弱的。如果他在某个时间点将'entry'更改为'item',或者如果有超过九个,或者... – 2010-01-19 11:12:20

+0

当然,它只适用于“输入”,但这正是他正在查看的内容(以及RegExp解决方案也不一般);关于你的第二个参数:''entry [12413525]'。substring(6,'entry [12413525]'。length - 1)'give me'“12413525”'。 – poke 2010-01-19 13:08:13

+0

重回第一项:是的,好吧,我评论了另一个我也读过的东西。第二项:Doh!我只是完全误读了长度。 – 2010-01-19 17:16:38

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