我有一个javascript表单,允许用户通过php将数据添加到MySQL表。该表单允许用户动态添加更多数据输入,如果它们需要的数据输入超过最初给出的单个输入。
用户点击"添加预算项"按钮添加更多项目。
视图中的表单如下所示:
<input type="button" value="Add Budget Item" onClick="addRow('dataTable')" />
<input type="button" value="Remove Budget Item" onClick="deleteRow('dataTable')" />
<br>
<p>(All actions apply only to entries with check marked check boxes only.)</p>
</p>
<table id="dataTable" class="form" border="1">
<tbody>
<tr>
<p>
<td >
<input type="checkbox" name="chk[]" checked="checked" value ='<?php echo set_value('chk[]') ?>' />
</td>
<td>
<label>Item/Procedure</label>
<input type="text" name="itm_nm[]" value ='<?php echo set_value('itm_nm[]') ?>'/>
</td>
<td>
<label for="itm_trig">Trigger/Visit</label>
<input type="text" class="small" name="itm_trig[]" value ='<?php echo set_value('itm_trig[]') ?>'/>
</td>
<td>
<td>
<label for="itm_amt">Budget Amount</label>
<input type="text" class="small" name="itm_amt[]" value ='<?php echo set_value('itm_amt[]') ?>'>
</td>
</p>
</tr>
</tbody>
</table>
表单将提交给验证控制器。验证失败后,我希望用所有动态创建的字段及用户输入的数据重新填充表单。
验证基本上如下:
function index(){
$this->form_validation->set_rules('itm_nm[]', 'Item Names', 'required');
$this->form_validation->set_rules('itm_trig[]', 'Item Triggers/Visits', 'required');
$this->form_validation->set_rules('itm_amt[]', 'Item Amounts', 'required|decimal');
if ($this->form_validation->run() == FALSE) {
$this->load->view('build_bud2');
}
返回视图时,这适用于非由用户动态生成的第一个表单项。但是,没有动态生成的数据字段出现(显然没有重新填充先前提交的数据)。
如何重新显示动态生成的数据字段,并以与验证失败时初始数据相同的方式重新填充?
答案 0 :(得分:0)
我会这样做,使用带有Codeigniter和Ajax的JSON视图,而不是“发布”表单。
如果你想要使用POST,你至少有2个选择:
答案 1 :(得分:0)
我会这样做:
顺便说一句,这个链接可以帮助或给你一个想法
How can I use CodeIgniter's set_value for a field that's an array?