2011-04-13 7 views
45

웹 양식에 입력 텍스트를 동적으로 만들고 싶습니다. 더 구체적으로, 나는 사용자가 원하는 텍스트 필드의 수를 입력하는 텍스트 필드를 가지고있다; 텍스트 필드가 동일한 양식으로 동적으로 생성되기를 바랍니다.동적으로 <input type = "text"/>을 만드는 방법

어떻게하면됩니까? 자바 스크립트와

답변

116

:

var input = document.createElement("input"); 
input.type = "text"; 
input.className = "css-class-name"; // set the CSS class 
container.appendChild(input); // put it into the DOM 
+0

죄송합니다. 양식에 표시 할 수 없습니까? 추가 버튼을 클릭하면 시작되는 함수를 만들었습니다. 그러나 나는 사용자 입력이 텍스트 필드의 수를 생성하는 텍스트 필드에서 어떻게 얻는 지 알 수 없다. . ? 그리고 동적으로 생성 된 텍스트 필드에 CSS 클래스를 지정하려고한다면 어떻게 될까요? . ? –

+0

예제에 코드를 추가하여 DOM에 추가하고 동적으로 생성 된 요소에 CSS 클래스를 추가하는 방법을 보여줍니다. – Zach

3

아마 방법 document.createElement();은 당신이 찾고있는 것입니다.

2

입력하는 텍스트 필드 수에 따라 루프에서 이와 같은 작업을 수행 할 수 있습니다.

$('<input/>').attr({type:'text',name:'text'+i}).appendTo('#myform'); 

더 나은 성능을 위해 모든 HTML을 먼저 만들고 DOM에 한 번만 주입하십시오.

var count = 20; 
var html = []; 
while(count--) { 
    html.push("<input type='text' name='name", count, "'>"); 
} 
$('#myform').append(html.join('')); 

편집이 예제는 HTML을 추가 할 jQuery를 사용하지만, 당신은 쉽게뿐만 아니라 innerHTML을을 사용하여 수정할 수 있습니다.

+6

이 질문은 jQuery를 지정하지 않았으므로 jQuery에 따라 다릅니다. – Jeff

2

당신은 내가 다음과 같은 링크가 당신을 도울 것입니다 생각 텍스트 상자

2

를 만드는 createElement() 방법을 사용할 수 있습니다. 필드를 동적으로 생성하고 동시에 필드를 제거하려면 여기에서 도움말을 얻을 수 있습니다. 나는 같은 질문을했다, 그래서 나는 대답

$(function() { 
     var scntDiv = $('#p_scents'); 
     var i = $('#p_scents p').size() + 1; 

     $('#addScnt').live('click', function() { 
       $('<p><label for="p_scnts"><input type="text" id="p_scnt" size="20" name="p_scnt_' + i +'" value="" placeholder="Input Value" /></label> <a href="#" id="remScnt">Remove</a></p>').appendTo(scntDiv); 
       i++; 
       return false; 
     }); 

     $('#remScnt').live('click', function() { 
       if(i > 2 ) { 
         $(this).parents('p').remove(); 
         i--; 
       } 
       return false; 
     }); 
}); 

http://jsfiddle.net/jaredwilli/tZPg4/4/

+0

이 코드의 제거 부분은 다소 불완전합니다. 2 개의 입력을 추가하고 가운데 하나를 제거하면 동일한 ID를 가진 2 개의 입력으로 끝납니다. 'i -; '로 줄을 제거하는 것이 더 낫습니다. PHP가 처리 한 양식에 넣으면 원래의 입력 필드와 별도의 입력 필드를 별도로 처리해야합니다. – jaaq

1

비 JQuery와 솔루션이 답변을 참조 있어요. 방금 도와 줬어! 자바 스크립트를 사용

Adding input elements dynamically to form

+0

아주 좋습니다. 사람들이 왜 jquery로 예제를 제공하는지 이해하지 못합니다. 고맙습니다. – kdobrev

8

, 모두 당신이 필요 document.createElementsetAttribute입니다.

var input = document.createElement("input"); 
input.setAttribute('type', 'text'); 

그런 다음 appendChild을 사용하여 생성 된 요소를 원하는 부모 요소에 추가 할 수 있습니다.

var parent = document.getElementById("parentDiv"); 
parent.appendChild(input); 
관련 문제