2013-04-26 2 views
1

Я создаю массив текстовых значений из группы динамически созданных текстовых областей.массив jquery не перебирает все элементы

Я поставил оператор предупреждения в цикле, чтобы узнать, работает ли он, и это только предупреждение первой текстовой области, с которой он сталкивается, но ни один из остальных.

Вот мой JQuery:

var textArray = []; 

$('[name=txtObjective]').each(function (i) { 
    alert($(this).val()); 
    textArray.push(i.val()); 
}); 

А вот что мои прокручиваемым выглядеть следующим образом:

<textarea name='txtObjective' class='objectives'>this is some text</textarea> 
<textarea name='txtObjective' class='objectives'>this is some more text</textarea> 
<textarea name='txtObjective' class='objectives'>this is even some more text</textarea> 

Любые понятия, что я делаю неправильно?

Благодаря

+2

'$ ('текстового поля [имя = txtObjective]'). Каждый (функция (я) {' изменить этот путь и попытаться – dreamweiver

+1

Почему вы не используете имена классов вместо имен? и да добавить textarea в ваш селектор – alix

+0

искать ошибку на консоли. –

ответ

2

Изменить свой цикл, чтобы:

$('[name=txtObjective]').each(function (i) { 
    textArray.push($(this).val()); 
}); 

В своем коде, i является index (0,1,2), который не имеет смысла пытаться вставлять в ваш массив. .each() имеет два параметра, индекс и значение, и вы пытались использовать значение индекса, который, конечно, не работает. Используя $(this).val(), вы можете указать значение текстового поля в свой массив.

+0

_В вашем коде, i - это индекс (0,1,2), который не имеет смысла пытаться нажимать на ваш массив. ** Нет, он не будет толкать индекс, так как 'i.val()' вызвал бы ошибку ** , –

+0

@ Vega - точно, и это порождало ошибку. – j08691

1

Попробуйте определения ваших текстовых областей, например, так:

<textarea name='txtObjective[]' class='objectives'> 

и польза:

$('textarea.objectives').each(function(i){ 
    //your code 
}) 
1

Вы должны получили ошибку на консоли - Object 0 has no method 'val'

$('[name=txtObjective]').each(function (i) { 
    alert($(this).val()); 
    textArray.push($(this).val()); // <<-- use $(this) here instead of i 
}); 

http://jsfiddle.net/mohammadAdil/j8JgX/

3

Поскольку вы получаете сообщение об ошибке при выполнении textArray.push(i.val()); .. Первый аргумент в .each является индексом, который является количество и применение .val выкидывает ошибку и вырывается из цикла.

Либо использовать второй аргумент, который является элементом, либо использовать this.

Изменить textArray.push(i.val()); в textArray.push($(this).val());

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