2010-01-19 3 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», когда я знаю, что идентификатор элемента является «secondEntry»?

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

Но как получить индекс 2? Мне нужно знать только индекс (2), а не целое имя (запись [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

Если он всегда находится в этом формате, то есть входе [x], вы можете использовать регулярные выражения;

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

И если вы хотите его как номер, 'вар Ind = ParseInt (я [1])'. Но отбрасывайте «запись» из регулярного выражения, чтобы он не был хрупким (не прерывался при изменении имени). –

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

Предоставлено, что работает для его выборочных данных, но * wow * является хрупким. Перерывы, если он изменяет 'entry' на' item' в какой-то момент, или если их больше девяти, или ... –

+0

Конечно, он работает только для «входа», но на это он смотрит (и RegExp решения не являются более общими); и в отношении вашего второго аргумента: ''entry [12413525]'. substring (6, 'entry [12413525]'. length - 1)' дает мне "12413525" '. – poke

+0

Переходим к первому вопросу: Да, я прокомментировал другой, который я читал. Второе: До! Я просто совершенно неправильно читаю бит длины. –

Смежные вопросы