javascript-CodeIgniter表单验证,重新填充动态添加的字段

我有这样的形式:

<form action="" method="post">
    <input type="text" name="name[]">
    <input type="text" name="name[]">
</form>
<button id="add">Add extra field</button>

并且有可能添加更多我使用Javascript / jQuery处理过的输入:

$('#add').click(function(){
    $('form').append('<input type="text" name="name[]">');
}

这里的一切工作正常.当我提交表单时,我用echo’< pre>‘.print_r($this-> input-> post(),TRUE)回显数据.’< / pre>‘;;我正在得到一切.

而且我正在使用表单验证类,因此,如果出现故障,我想使用set_value函数来保存值.然后,表单如下所示:

<form action="" method="post">
    <input type="text" name="name[]" value="<?=set_value('name[]');?>">
    <input type="text" name="name[]" value="<?=set_value('name[]');?>">
</form>
<button id="add">Add extra field</button>

但是…动态添加的输入不存在,因为它们是Javascript添加的.问题是:在格式验证失败后,如何使用CodeIgniter“保留”动态添加的输入以及那里的值?

到处搜寻但找不到任何东西:(

解决方法:

在每个表单元素上提供索引.

<form action="" method="post">
    <input type="text" name="name[1]">
    <input type="text" name="name[2]">
</form>

因此,您的JS变得像

counter = 3;
$('#add').click(function(){
    $('form').append('<input type="text" name="name['+counter+']">');
    counter++;
}

现在,如果验证失败,则必须添加如下条件:

<form action="" method="post">
<?php
    if ($this->form_validation->run() == FALSE)
    {
        foreach($this->input->post('name') as $ind=>$item)
        {
    ?>
        <input type="text" name="name[<?php echo $ind ?>]" 
                         value="<?=set_value('name[".$ind ."]');?>">
    <?php
        }
    }
    else
    {
    ?>
        <input type="text" name="name[1]">
        <input type="text" name="name[2]">
    <?php
    }
?>
</form>
上一篇:领英获取令牌返回HTTP 1.1 400-错误的请求错误


下一篇:php-获取CodeIgniter在表单提交后保存值