繁体   English   中英

使用Codeigniter动态添加表单中的字段

[英]Adding fields in a form dynamically with codeigniter

我正在codeigniter中修改此指南: http ://www.quirksmode.org/dom/domform.html,以创建具有动态字段的表单,所有功能都运行良好,但是当我尝试在其中回显数据时我的控制器具有:

echo '<pre>'.print_r($this->input->post(),TRUE).'</pre>';

它只是打印在视图中添加的最后一组值。

例

这是js函数:

var counter = 0;
function init() {
  document.getElementById('moreFields').onclick = moreFields;
}

function moreFields() {
  counter++;
  var newFields = document.getElementById('readroot').cloneNode(true);
  newFields.id = '';
  newFields.style.display = 'block';
  var newField = newFields.childNodes;
  for (var i=0;i<newField.length;i++) {
    var theName = newField[i].name
    if (theName)
      newField[i].name = theName + counter;
  }
  var insertHere = document.getElementById('writeroot');
  insertHere.parentNode.insertBefore(newFields,insertHere);
}

这是表单代码:

<?php echo form_open('admin/grabar_ruta'); ?>
   <table width="100%">
    <tr>
      <td width="12%" align="right">Fuente:</td>
      <td width="13%" align="left"><select name="fuente"> 
      <?php foreach($fuentes as $row) { echo '<option value="'.$row->id.'">'.$row->serial.'</option>'; } ?> </select></td>
      <td width="12%" align="right">Vehículo:</td>
      <td width="13%" align="left"><select name="vehiculo"> 
      <?php foreach($vehiculos as $row) { echo '<option value="'.$row->id.'">'.$row->placa.'</option>'; } ?> </select></td>
      <td width="12%" align="right">Conductor:</td>
      <td width="13%" align="left"><select name="conductor"> 
      <?php foreach($conductores as $row) { echo '<option value="'.$row->id.'">'.$row->nombre.'</option>'; } ?> </select></td>
       <td width="12%" align="right">Fecha:</td>
      <td width="13%" align="left"><input type="date" name="name[]"></td>
    </tr>
    </table> 
    <div id="readroot" >

<table width="100%">
    <tr>
      <td width="12%" align="right">Origen:</td>
      <td width="13%" align="left"><input type="text" name="origen" size="12"></td>
      <td width="12%" align="right">Hora Salida:</td>
      <td width="13%" align="left"><input type="time" name="hora_salida"></td>
      <td width="12%" align="right">Destino:</td>
      <td width="13%" align="left"><input type="text" name="destino" size="12"></td>
       <td width="12%" align="right">Hora Llegada:</td>
      <td width="13%" align="left"><input type="time" name="hora_llegada"></td>
    </tr>
  </table>
<input type="button" value="Eliminar"
    onclick="this.parentNode.parentNode.removeChild(this.parentNode);" /><br /><br /> 
</div>
  <span id="writeroot"></span>
  <input type="button" id="moreFields" value="Añadir ruta" />
  <input type="submit" value="Grabar Ruta" />  
<?php echo form_close(); ?>

哦,我可以解决我的问题,我只需要在视图中为动态组件使用数组名称:

<?php echo form_open('admin/grabar_ruta'); ?>
   <table width="100%">
    <tr>
      <td width="12%" align="right">Fuente:</td>
      <td width="13%" align="left"><select name="fuente"> 
      <?php foreach($fuentes as $row) { echo '<option value="'.$row->id.'">'.$row->serial.'</option>'; } ?> </select></td>
      <td width="12%" align="right">Vehículo:</td>
      <td width="13%" align="left"><select name="vehiculo"> 
      <?php foreach($vehiculos as $row) { echo '<option value="'.$row->id.'">'.$row->placa.'</option>'; } ?> </select></td>
      <td width="12%" align="right">Conductor:</td>
      <td width="13%" align="left"><select name="conductor"> 
      <?php foreach($conductores as $row) { echo '<option value="'.$row->id.'">'.$row->nombre.'</option>'; } ?> </select></td>
       <td width="12%" align="right">Fecha:</td>
      <td width="13%" align="left"><input type="date" name="fecha"></td>
    </tr>
    </table>

    <div id="readroot" >

<table width="100%">
    <tr>
      <td width="12%" align="right">Origen:</td>
      <td width="13%" align="left"><input type="text" name="origen[]" size="12"></td>
      <td width="12%" align="right">Hora Salida:</td>
      <td width="13%" align="left"><input type="time" name="hora_salida[]"></td>
      <td width="12%" align="right">Destino:</td>
      <td width="13%" align="left"><input type="text" name="destino[]" size="12"></td>
       <td width="12%" align="right">Hora Llegada:</td>
      <td width="13%" align="left"><input type="time" name="hora_llegada[]"></td>
    </tr>
  </table>
<input type="button" value="Eliminar"
    onclick="this.parentNode.parentNode.removeChild(this.parentNode);" /><br /><br /> 
</div>
  <span id="writeroot"></span>
  <input type="button" id="moreFields" value="Añadir ruta" />
  <input type="submit" value="Grabar Ruta" />
<?php echo form_close(); ?>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM