2014-03-05 5 views
0

에서 양식 필드 조작 양식의 길이로 인해 관리하기 쉽게하기 위해 (부트 스트랩을 기반으로하는) 탭으로 분할하는 양식이 있습니다 (각 탭을 단계로 상상해보십시오. 마법사 자체가 아니기 때문에 마법사와 같은 마법사를 만드는 데별로 관심이 없습니다.), 각 탭에는 6 개의 탭 중 2 개에 폼에 대한 특정 정보가 들어 있습니다. 각 테이블마다 다른 테이블이 있습니다. 버튼을 나는 JQuery와 기능은 "TBODY"태그의 첫 번째 "아이"를 복제하고 (필요한 경우, 모든 요소 "하지만"첫 번째 자식을 삭제하고 있습니다.복제 된 테이블 행 jquery

<script> 
// function to clone last child in the nearest table. 
$('.cloneLastChild').click(function() { 
    var parentControl = $('#' + $(this).closest('.table').attr('id')); 
    var counter = parentControl.children('tbody').size(); 
    //console.log(counter); 
    parentControl.children('tbody:first').clone().appendTo(parentControl); 
return false; 
}); 
// function to delete the last child of a table, but always leave 1. 
$('.removeLastChild').click(function() { 
var parentControl = $('#' + $(this).closest('.table').attr('id')); 
parentControl.children('tbody').not(':first').last().remove(); 
return false; 
}); 

나는 테이블을 사용하고 있습니다로 , "this"요소에 가장 가까운 테이블에 특별히 추가 할 것입니다.

저는 고객의 요구 사항으로 인해이 프로젝트를 빌드 할 때 CakePHP를 사용하고 있습니다. 요소의 이름은 문제가 발생하는 곳입니다.

여기는 "이름 지정 조작"문제를 일으키는 특정 탭의 코드입니다. 이 아래

<!-- paso 3.2 --> 
<div class="tab-pane fade in" id="paso3-2"> 
    <!-- fieldset --> 
    <fieldset> 
     <legend class="h5">3.2. Actividades Generales a Realizar</legend> 
     <h4 class="h4">Duración del Proyecto:</h4> 
     <!-- form-group --> 
     <div class="form-group"> 
      <label for="fecha_inicio" class="col-md-2 control-label">Fecha de Inicio:</label> 
      <!-- col-md-10 --> 
      <div class="col-md-4"> 
       <input type="text" class="form-control datepicker" name="data[Proyecto][fecha_inicio]" id="fecha_inicio" placeholder="Fecha de Inicio"> 
      </div><!-- ./cold-md-10 --> 
      <label for="fecha_final" class="col-md-2 control-label datepicker">Fecha de Culminaci&oacute;n:</label> 
      <!-- col-md-10 --> 
      <div class="col-md-4"> 
       <input type="text" class="form-control datepicker" name="data[Proyecto][fecha_final]" id="fecha_final" placeholder="Fecha de Culminaci&oacute;n"> 
      </div><!-- ./cold-md-10 --> 
     </div><!-- ./form-group --> 
     <h4>Se&ntilde;ale las actividades generales a realizar especificando los meses de ejecuci&oacute;n</h4> 
     <br><br> 
     <table class="table table-bordered" id="tablaAtividadesLista"> 
      <thead> 
       <tr> 
        <th class="col-md-1" rowspan="2">N#</th> 
        <th class="col-md-10" rowspan="2">Actividades a desarrollar</th> 
        <th colspan="12"><h4>Meses de Inicio y Culminaci&oacute;n de Actividades</h4></th> 
        <th rowspan="2"><a href="javascript:;" class="cloneLastChild"><span class="glyphicon glyphicon-plus-sign"></span></a><a href="javascript:;" class="removeLastChild"><span class="glyphicon glyphicon-minus-sign"></span></a></th> 
       </tr> 
       <tr> 
        <th>Ene</th> 
        <th>Feb</th> 
        <th>Mar</th> 
        <th>Abr</th> 
        <th>May</th> 
        <th>Jun</th> 
        <th>Jul</th> 
        <th>Ago</th> 
        <th>Sep</th> 
        <th>Oct</th> 
        <th>Nov</th> 
        <th>Dic</th> 
       </tr> 
      </thead> 
      <tbody> 

여기에 위의 첫 번째 아이를 종료하고 탭 코드의 나머지 부분을 계속 첫째 아이

   <tr> 
        <td> 
         <!-- form-group --> 
         <div class="form-group"> 
          <label for="ActividadProyectosOrden" class="col-md-1 control-label"></label> 
          <!-- col-md-10 --> 
          <div class="col-md-10"> 
           <?php echo $this->form->input('ActividadProyectos.0.orden', array('div' => false, 'label' => false, 'class' => 'form-control', 'placeholder' => '#')); ?> 
          </div><!-- ./cold-md-10 --> 
         </div><!-- ./form-group --> 
        </td> 

        <td> 
         <!-- form-group --> 
         <div class="form-group"> 
          <label for="ActividadProyectosDescripcion" class="col-md-1 control-label"></label> 
          <!-- col-md-10 --> 
          <div class="col-md-10"> 
           <?php echo $this->form->input('ActividadProyectos.0.descripcion', array('div' => false, 'label' => false, 'class' => 'form-control', 'placeholder' => '#')); ?> 
          </div><!-- ./cold-md-10 --> 
         </div><!-- ./form-group --> 
        </td> 
        <?php 
         for($i = 1; $i <= 12; $i++){ ?> 
        <td> 
         <?php echo $this->form->input('ActividadProyectos.0.duracion.'.$i.'', array('div' => false, 'label' => false, 'type' => 'checkbox', 'id' => 'ActividadProyectos.duracion.'.$i.'')); ?> 
        </td> 
        <?php } ?> 
       </tr> 

입니다. 마지막 자식을 복제 메신저, 문제 임 외장 인 경우

  </tbody> 
     </table> 
     <!-- form-group --> 
     <div class="form-group"> 
      <label for="telf2" class="col-md-1 control-label">Direcci&oacute;n del evento:</label> 
      <!-- col-md-10 --> 
      <div class="col-md-11"> 
       <textarea rows="3" class="form-control textarea" id="address" placeholder="Direcci&oacute;n del evento"></textarea> 
      </div><!-- ./cold-md-10 --> 
     </div><!-- ./form-group --> 
     <!-- form-group --> 
     <div class="form-group"> 
      <label for="pais" class="col-md-1 control-label">Pa&iacute;s:</label> 
      <!-- col-md-10 --> 
      <div class="col-md-3"> 
       <select class="form-control"> 
        <option>1</option> 
        <option>2</option> 
        <option>3</option> 
        <option>4</option> 
        <option>5</option> 
       </select> 
      </div><!-- ./cold-md-10 --> 
      <label for="estado" class="col-md-1 control-label">Estado:</label> 
      <!-- col-md-10 --> 
      <div class="col-md-3"> 
       <select class="form-control"> 
        <option>1</option> 
        <option>2</option> 
        <option>3</option> 
        <option>4</option> 
        <option>5</option> 
       </select> 
      </div><!-- ./cold-md-10 --> 
      <label for="ciudad" class="col-md-1 control-label">Ciudad:</label> 
      <!-- col-md-10 --> 
      <div class="col-md-3"> 
       <select class="form-control"> 
        <option>1</option> 
        <option>2</option> 
        <option>3</option> 
        <option>4</option> 
        <option>5</option> 
       </select> 
      </div><!-- ./cold-md-10 --> 
     </div><!-- ./form-group --> 
    </fieldset><!-- ./fieldset --> 
</div><!-- ./paso 3.2 --> 

, 나는 "MODELNAME라는"Modelname.NEXTROW.fieldname "첫 번째 자식으로 이름을 변경해야 할 몇 가지 형태의 요소가 .0.fieldname ", 어떻게 복제 할 수 있습니다, 그래서 각 복제 된 요소는 [Modelname] .0. [fieldname]에서 [Modelname] .1/2/3/4/5/6 등으로 이름을 변경합니다. [fieldname] 각 행을 복제 할 때마다

나는 카운터 변수를 설정하고 의도대로 작동합니다. 2 개의 새 하위 항목을 추가하면 콘솔에서 아무 위치 에나 인쇄 할 때, 하지만 1을 더하면 현재 카운트를 출력하므로 거기에서 다루어집니다.

ActividadProyectos.0.fieldname

당신이 코드에서 언급하면 ​​내가 가진 : 당신은, 그들이 이름을 지정하는 볼 수있는 내가 문제가있어

필드는, 최초의 어린이들입니다 "개월"을 나타내는 체크 상자를 반복하는 테이블의 for 루프는 쉼표로 구분 된 0과 1의 단일 배열에 해당 값이 필요합니다. 여기서 1은 월 활성을 의미하고 0은 비활성입니다. 데이터를 액세스하고 처리하는 다른 모듈

내가 원하는 것은 간단히 말해서 각 복제 된 자식은 ActividadProyectos.0.fieldname을 다음과 같이 변경해야합니다. ActividadProyectos.counter.fieldname.

모든 도움을 주시면 대단히 감사하겠습니다.

+0

나는 dom 요소를 조작하고, 주입하고, 복제 대신에 append를 사용하고, acumulator 변수를 사용하는 대신이 문제를 해결했습니다. 어쨌든이 문제에 대한 도움을 주셔서 감사합니다. – JLChafardet

답변

0

은 그냥 HTML 출력에 CakePHP의에 의해 생성 된 행의 양을 얻을 :

http://api.jquery.com/length/

var rowCount = $("#table tr").length 
// in your loop: 
rowCount++; 

그리고 테이블에 복사본을 추가 할 때이 값에서 반복 거기에서 시작한다.

+0

귀하의 회신은 내 문제에 실제로 적용되지 않습니다. 이미 내 $ ('.cloneLastChild')에 카운터가 추가되어 있습니다. click (function()), 필요한 필드는 27 개 필드의 이름 속성을 조작하는 방법입니다. 테이블 행을 alonside, 카운터 변수와 함께 0을 변경하면 각각의 새로운 행 필드의 이름은 ActividadProyectos.COUNTER.field – JLChafardet

+0

이 문제를 해결할 수 있습니다. 어쨌든 도움을 주셔서 감사합니다. 실제로 현재 카운터를 사용하고 있습니다. 네가 내가 필요하다고 생각하는 것 때문이 아니야. – JLChafardet