2011-08-19 7 views
4

목록 색인 <li>을 기반으로 모든 입력 이름을 변경하려고 시도했지만 전혀 변경되지 않는 것 같습니다.JQUERY를 사용하여 입력 이름 변경

$('.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 
    });  
} 
}); 

이제 경고가 내가 원하는 올바른 이름을 표시하지만, 이름을 변경 내가 요소를 점검하지 않으며 양식을 제출하고 모든 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> 

참고 : 나는 ARRAY로 노래라는 이름의 입력을 원하지 않는다.

+0

실제로는 일반적인 서버 측 작업이므로 정확한 이름을 생성 할 수 있습니다. 대안 - 당신은이 모든 항목을 삭제하고 JS로 다시 쓸 수 있습니다 (그냥 좋은 연습이라고 생각하지 않습니다) – Mike

답변

6
$("li.songs").each(function(i) { 
    $(this).find('input').attr('name', 'song' + i); 
}); 
18

개체를 복제하면 원래 DOM 노드가 아닌 복사본이 변경됩니다.

clone()을 사용하면 괜찮습니다. 또는 다음을 수행하십시오.

$("li.songs input").each(function(i) { 
    $(this).attr('name', $(this).attr('name') + i); 
}); 
관련 문제