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

标签 javascript codeigniter dynamic validation

我有这样一个表格:

<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>

关于javascript - CodeIgniter 表单验证,重新填充动态添加的字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16314893/

相关文章:

javascript - 防止页面在 .html 和 .append 上跳转?

javascript - 设置步数间隔 - 每步应该更长

javascript - 使用react js和纯bootstrap是否正确?

mysql - 将 codeigniter mysql 日期时间列设置为 time() 始终将其设置为 0

javascript - AJAX 响应非常慢

php - 动态创建的复选框计算,未正确显示

c# - 错误 CS1978 : Cannot use an expression of type 'uint*' as an argument to a dynamically dispatched operation

javascript - 无法启用禁用的输入

c++ - 混淆 C++ prime 加上动态数组的例子

sockets - 如何使用套接字输入使用JavaFX制作动态折线图