【问题标题】:Re-populate dynamic javascript after failed Codeigniter validationCodeigniter 验证失败后重新填充动态 javascript
【发布时间】:2014-06-24 15:03:25
【问题描述】:

我有一个 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');

        }

当视图返回时,这适用于第一个不是由用户动态生成的表单项。但是,没有出现任何动态生成的数据字段(并且显然没有重新填充以前提交的数据)。

如何让动态生成的数据字段重新出现并重新填充,就像验证失败时初始数据一样?

【问题讨论】:

  • 你有一个额外的仅供参考
  • 我觉得还有一些你没有给我们展示的代码,特别是在 javascript 方面,如果有,请发布。

标签: javascript php forms codeigniter


【解决方案1】:

我会这样做,使用带有 Codeigniter 和 Ajax 的 JSON 视图,而不是“发布”表单。

  • 使用 AJAX 将表单提交到 PHP 脚本。
  • PHP 脚本获取字段并返回 JSON 响应
  • 如果存在一个或多个验证错误,请发回包含所有字段和错误的适当 JSON 响应。例如,响应可能是带有错误消息的字段 ID。
  • JS 获取 JSON 响应并显示错误(如果有)。

如果您仍然想使用 POST,您至少有 2 个选择:

  • 输出用户输入内容的 JSON 表示,该表示将在 JavaScript 中可用。然后,循环遍历所有字段并根据 JSON 表示“重做”字段结构。
  • 或者,对用户输入的内容(在对象或数组中)进行 PHP 表示,并在 PHP 中循环遍历字段,并一一显示所有字段。

【讨论】:

    【解决方案2】:

    我会这样做:

    1. 点击提交按钮表单
    2. 验证输入
    3. 如果验证失败,将相同的 POST 数据传递到视图页面(再次)
    4. 使用 foreach 循环和 东西。

    顺便说一句,这个链接可能会帮助你或给你一个想法

    How can I use CodeIgniter's set_value for a field that's an array?

    【讨论】:

      猜你喜欢
      • 2010-12-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-02-28
      • 1970-01-01
      • 1970-01-01
      • 2014-03-29
      相关资源
      最近更新 更多