Повторно заполнить динамический выпадающий список «set_select» после сбоя проверки формы в Codeigniter?

#codeigniter #html-select

#codeigniter #html-select

Вопрос:

Мне было интересно, возможно ли повторно заполнить динамический dropdown (в частности, option из select ) после сбоя проверки формы, который генерируется другим dropdown at on change event .

Мой jQuery хорошо работает над динамическим заполнением option a select , а также at server-side при выборке данных, моя единственная проблема заключается в том, когда форма отправлена и проверка завершается неудачей, поэтому в основном динамика select option/s сбрасывается.

Кто-нибудь может мне помочь с этой проблемой?

Комментарии:

1. где ваш контроллер, view jquery ajax-код?

2. у моего контроллера, view, а также моего jQuery нет проблем, просто я не знаю, возможно ли повторно заполнить его снова после динамического заполнения, когда проверка формы завершается неудачей. @M.Hemant

Ответ №1:

Здесь у вас есть 2 варианта:

1) Вы вручную устанавливаете 2 поля выбора с помощью CI и повторно заполняете / устанавливаете их. Вы бы создали их на основе POST значений, которые были неверными.

Предполагая, что список A заполняет список 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. Спасибо за ваш ответ, у меня только что появилась идея о вашем ответе, но проблема сейчас в том, что trigger технически в моем случае он не срабатывает. @Antony

2. Как вы обрабатываете изменения в поле выбора? Когда пользователь изменяет поле выбора, можете ли вы показать нам код, который вы используете для обработки этого?

Ответ №2:

Да, это возможно, этот пример работает с Codeigniter 4, но я совершенно уверен, что он работает также с Codeigniter 3. Здесь я хотел создать несколько выпадающих полей с помощью Select2

 <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