简体   繁体   English

验证后重新填充For循环中的Select Multiple

[英]Repopulate Select Multiple in For loop after validation

So basically I have been having alot of trouble repopulating my select box during form my form validation check. 因此,基本上,在表单验证检查期间重新填充选择框时,我一直遇到很多麻烦。 Below I have put an example of my output, controller, and view. 下面,我给出了输出,控制器和视图的示例。 Could someone please help me figure this out. 有人可以帮我解决这个问题。 Thank you in advance. 先感谢您。

I have multi tag that looks like this: 我有多个标签,如下所示:

    <select name="names[]" multiple>
            <option value="1">John Doe</option>
            <option value="2">Michael Scott</option>
            <option value="3">Luke Skywalker</option>
            <option value="4">Princess Arial</option>
    </select>

My Controller validation check: 我的控制器验证检查:

    $this->form_validation->set_rules('name', 'Name', 'required');
    if ($this->form_validation->run() == FALSE){
        $this->reload_form_view();
    }

My View: 我的观点:

    <select name="names[]" multiple>
            <?php 
                foreach ($users as $user) {
                    $id = intval($user->id, 10);
                    $value = set_value('names[]', $id);
                    $name = $user->full_name;
                    echo '<option value="'.$value.'">'. $name .'</option>';
                }
            ?>
    </select>

When it comes back false I want to repopulate the selected options with options previously selected. 当返回假时,我想用先前选择的选项重新填充选择的选项。 I am also populating the select box with users from the database. 我还用数据库中的用户填充选择框。

Could some please help me on what I am doing wrong, you would help me so much. 有人能帮助我解决我做错的事情吗,您会帮助我很多。 THANK YOU IN ADVANCE!!!!! 先感谢您!!!!! :) :)

You can give it a try: 您可以尝试一下:

foreach ($users as $user) {
    $id     = intval($user->id, 10);
    $value  = set_value('names[]', $id);
    $name   = $user->full_name;
    echo '<option value="'.$id.'" '. set_select("names", $id ) .'>'. $name .'</option>';
}

This is by using the set_select function provided by form helper of CI , you must load the form helper before using it. 这是通过使用CIform helper提供的set_select函数,您必须在使用之前加载表单助手。

You can just add a check: 您可以添加支票:

echo '<option value="'.$value.'" '.(in_array($user->id,$this->input->post("names")) ? 'selected':'').'>'. $name .'</option>';

I haven't checked if in_array() works on multiple selects, but its about the idea. 我没有检查in_array()可以在多个选择上使用,但是关于这个想法。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 验证错误后重新填充Zend表单多选 - Zend form multiselect repopulate after validation error 添加新项目后重新填充选择菜单 - Repopulate select menu after adding new item 使用 form_validation() CodeIgniter 时重新填充 select2 数据 - Repopulate select2 data when using form_validation() CodeIgniter Form :: file:如何使用Input :: old在验证错误和/或更新后重新填充? - Form::file: How to repopulate with Input::old After Validation Errors and/or on Update? Laravel - 如何在验证后重新填充输入列表数据 - Laravel - how to repopulate input list data after validation 重新填充选择字段中的值 - Repopulate values in select field 如何在laravel 5中的更新期间验证失败后重新填充具有最新更改的表单 - How to repopulate a form with latest changes after validation failure during update in laravel 5 使用 laravel 验证方法验证多个 select 框内循环 - Validating multiple select box inside loop using laravel validation method 如何根据数据库中的csv重新填充/重新选择/自动选择多个选择框值? - How repopulate/reselect/autoselect the multiple select box values on basis of csv from database? javascript getElementById重新填充多行 - javascript getElementById repopulate for multiple rows
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM