Изменение имени входа с помощью JQUERY - PullRequest
8 голосов
/ 19 августа 2011

Я пытаюсь изменить все входные имена на основе индекса списка <li>, но похоже, что он вообще не меняется.

$('.test').click(function() {
for(var i=0;i<$("li.songs").length;i++)
{
  var ob = $("li.songs").eq(i).clone();
  ob.find('input').each(function()
  {
    this.name = this.name+i;
    alert(this.name); //just checking if does it change
  });      
}
});

Теперь в предупреждении отображается правильное имя Iхочу, НО без изменений в имени, когда я проверяю элемент И пытаюсь отправить форму и отобразить все значения POST.

Пример ожидаемого вывода перед изменением:

<li class="songs"><input type="text" name="song" /></li>
<li class="songs"><input type="text" name="song" /></li>
<li class="songs"><input type="text" name="song" /></li>

После изменения:

<li class="songs"><input type="text" name="song1" /></li>
<li class="songs"><input type="text" name="song2" /></li>
<li class="songs"><input type="text" name="song3" /></li>

ПРИМЕЧАНИЕ. Я НЕ ХОЧУ, чтобы входная названная песня была Массивом.

Ответы [ 2 ]

24 голосов
/ 19 августа 2011

Вы клонируете объект, поэтому изменение выполняется для копии, а не для исходного узла DOM.

Не используйте clone(), и все будет в порядке. Или сделать это:

$("li.songs input").each(function(i) {
  $(this).attr('name', $(this).attr('name') + i);
});
8 голосов
/ 19 августа 2011
$("li.songs").each(function(i) {
  $(this).find('input').attr('name', 'song' + i);
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...