2014-10-03 2 views
-1

양식에 특정 수의 입력 태그를 표시하려고합니다. 이것은 사용자가 얼마나 많은 항목을 동적으로 선택하는지에 달려 있습니다.for 루프를 사용하여 여러 폼 요소를 동적으로 렌더링하는 방법

예를 들어 사용자가 3 개 항목을 원한다고 말하면 3 개의 입력 막대를 표시하고 싶습니다.

이 작업을 진행하는 가장 좋은 방법은 분명하지 않습니다. 예를 들어 선택 옵션에서 얼마나 많은 항목을 선택할 지 결정할 수 있습니다.

$(".howmany").change(function(){ 

      var value = $(this).val(); 

} 

그러나 그 이후로 진행하는 올바른 방법은 무엇입니까? 모든에 대해 을 사용하여 선택한 입력 태그의 정확한 수를 동적으로 렌더링하거나 모든 입력 태그를 사전 표시 (숨김)하고 요청한 입력 태그의 정확한 수만 표시합니다.

나는 그것이 어떻게 행해졌는지에 대한 예를 알고있을 것이다. 그 순간 나는 전체 지역 만 숨길 수 있습니다. 예 :

var requests = $("#howmany").val(); 

     if (reqeusts < 1){ 
      $('#reqeusts').hide(); 
     } 
     else { 
      $('#reqeusts').show(); 
     } 

하지만 분명히 사용자가 선택한 번호에 따라 개별 양식 태그를 표시 할 수 있어야합니다.

안녕하세요. 다시 답변 드리겠습니다.

정말 죄송 합니다만, 혼돈의 이유는 imput의 값이 배열 함수에서 동적으로 제공된다는 것입니다.

public function arrayValues() 
        { 
         return $selection = array(
          '0' => 'none' ,' 1' => '1 item' ,' 2' => '2 item' ,' 3' =>' 3 item'); 
        } 

그러면 선택한 각 항목 수에 대해 아래의 입력 선택 태그 중 하나를 렌더링해야합니다. 나는 이것이 당신에게 당신의 문제를 해결하는 방법에 대한 아이디어를 제공 희망

$('button').click(function() { 
    $('div').empty().append(new Array(+$('input[type=number]').val()+1) 
    .join("<input type='text' placeholder='Type Something'/>")); 
}); 

:

    <?php echo ' 
        <select id="howmany" name="items[howmany]" />'; 


        foreach ($arrayValues as $key => $value) 
        {  
         echo '<option value="' . $key .'">' . $value . '</option>'; 
        } 
        echo'</select>'; 
        ?> 
+0

내가 분명히 수에 따라 사용자가 개별 양식 태그를 보여 진실하지 selected._ 할 수 있어야합니다 _but. 가변 수의'input'을 가진 단일 폼이 필요합니다. – melancia

+0

간단한'for 루프'는'inputs'를 덧붙여 문제를 잘 해결할 것입니다. – melancia

+0

안녕 MelancialUk. 당신의 응답을 주셔서 감사합니다. 문제는 단순한 for 루프보다 복잡하다고 생각합니다. 나는 그 문제에 대해 완전한 쟁점을 제시하지 않았다. 오류가있어서 사과드립니다. 동적으로 렌더링 될 필요가있는 입력 태그는 그 태그에 공급되는 배열 값에 의존하는 선택 태그입니다. 나는 원래의 질문을 수정했다. 나는 내 질문을 다운로드하지 말 것을 요청할 것이다. 나는 복잡한 질문이라고 생각한다. –

답변

0
$(".howmany").change(function(){ 

      var value = $(this).val(); // get the number of inputs 
      value = parseInt(value); // make sure it's an integer 
      htmlStr = ""; 
      for (var i = 0; i < value; i++) 
      { 
        htmlStr += "Label " + i +" <input type='text'>"; 
      } 

      $('.container').empty(); 
      $('.container').append(htmlStr); 
} 
0

당신이 뭔가를해야합니다.

DEMO

+0

안녕하세요. 도와 주셔서 정말 감사합니다. 나는 지금 그것을보고있다. 나는 배열 값을 가진 imput 태그를 먹일 필요가 있음을 언급하는 것을 잊었다. 위의 질문을 수정했습니다. 나는 문제가 지금 당신의 방정식에 그 배열 값을 먹이는 방법이라고 생각한다. –

관련 문제