2014-03-05 106 views
0

我有一個表單,我決定將它分成標籤(基於引導程序),以便由於表單的長度而更易於管理(將每個標籤想象爲一個步驟,但將其設置爲一個步驟不是一個嚮導本身,因爲我沒有真正有興趣構建它嚮導),每個選項卡包含表單的特定信息,在6個選項卡中的2箇中,我有一個表格(每個選項卡中的表格不同),其中帶有按鈕我克隆「TBODY」標籤的第一個「孩子」與jQuery的功能,並刪除(如果需要的話,任何元素「但」第一個孩子。從克隆的錶行處理表單字段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 --> 

當IM克隆的最後一個孩子,這個問題林面對的,是的,我有幾個表單元素,我需要將名稱更改爲「Modelname.NEXTROW.fieldname」,第一個孩子,被命名爲「MODELNAME .0.fieldname「,我怎樣才能做到這一點,所以每個克隆的元素,將名稱從[Modelname] .0。[fieldname]更改爲[Modelname] .1/2/3/4/5/6等等。 [字段名]作爲每行被克隆,

我有一個計數器變量設置和按預期工作,如果我添加2個新的孩子,它打印無論我在進入控制檯時取消註釋,如果我刪除2,但加1,它會打印當前的計數,所以我覆蓋在那裏。

我有問題的領域是那些第一的孩子,你可以看到,它們被命名爲:

ActividadProyectos.0.fieldname

如果您在代碼中指出的那樣,我有一個for循環,在表格中,重複一個代表「月」的複選框,我需要這些值在0和1之間的單個數組中,用逗號分隔,其中1表示月活動,0月不活動,用於其他模塊訪問和處理數據

我需要的是,那麼簡而言之,每個克隆的孩子,應該改變ActividadProyectos.0.fieldname,到ActividadProyectos.counter.fieldname

任何幫助是極大的讚賞!

+0

我解決了這個問題,而不是操縱dom元素,使用注入,使用append而不是克隆,並使用一個累加器變量。無論如何,感謝在這個問題上的幫助。 – JLChafardet

回答

0

剛拿到的數量,在HTML輸出CakePHP所產生的列:

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

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

從那裏開始添加副本表時,從該值迭代。

+0

你的回答並不真正適用於我的問題,我已經在我的$('。cloneLastChild')中添加了一個計數器。click(function(),我需要的是一種方法來操縱27個字段的name屬性克隆表的行,並更改計數器變量0,所以每個新的行字段被命名爲ActividadProyectos.COUNTER.field – JLChafardet

+0

這並不意味着解決了這個問題,謝謝幫助,確實現在使用一個計數器,tho不是因爲你認爲我需要它。 – JLChafardet