在Codeigniter中表单验证失败后,用“ set_select”重新填充动态下拉列表吗?

时间:2019-03-18 09:37:10

标签: codeigniter html-select

我想知道是否有可能在表单验证失败后重新填充动态dropdown(尤其是option的{​​{1}}),而动态验证是由另一个selectdropdown

我的jQuery在获取数据时填充on change event的动态option以及select时都工作良好,我的唯一问题是表单提交且验证失败时,因此基本上,动态server-side select将会重置。

有人可以帮我解决这个问题吗?

2 个答案:

答案 0 :(得分:0)

您在这里有2个选择:

1)您手动使用CI设置2x选择字段,然后重新填充/设置它们。您将根据错误的POST值构造这些值。

假定列表A填充列表B,而列表B填充列表C,则您可能不想这样做。在这种情况下,您可以定义一些隐藏变量,例如:

var field1 = '<?php $_POST['field1']; ?>';
var field2 = '<?php $_POST['field2']; ?>';
var field3 = '<?php $_POST['field3']; ?>';

$(document).ready(function(){
    $('#field1').val(field1).trigger('change'); // or whatever on() query event you use
    $('#field2').val(field1).trigger('change'); // or whatever on() query event you use
    $('#field3').val(field1).trigger('change'); // or whatever on() query event you use
})

可以帮忙吗?您将触发该触发器,然后加载填充每个选择框的列表/ ajax调用。

答案 1 :(得分:0)

是的,这是可能的, 这个例子适用于 Codeigniter 4,但我很确定它也适用于 Codeigniter 3。在这里我想用 Selected2 做一个多下拉字段

<div class="form-group">
    <label>Categories</label>
    <?php
        $parameters = array('class' => 'form-control select2_cat', "multiple" => "multiple");
        $options = array();
        foreach ($categories as $cat) {
            $options[$cat['name']] = $cat['name'];
        }
        echo form_dropdown(
            'categories[]',
            $options,
            set_value('categories[]') != "" ? set_value('categories[]') : 0,
            $parameters
        ); 
    ?>
</div>

你从代码中看到,我正在使用 set_value() 。我也在检查 set_value 是否为空字符串。

您可以在此处找到更多信息:https://www.py4u.net/discuss/37330