CodeIgniter - 如何保存Dropdown所选值并在返回页面时设置它

时间:2017-06-26 11:08:25

标签: javascript php jquery html codeigniter

我有一个Dorpdown菜单,当我选择一个值时,会有一个表格,其中包含有关此值的条目。在表格之外,我可以打开新页面中的每个条目。我想制作一个“后退”按钮,当我回到页面时,应该选择我之前选择的值。

这是我的下拉代码:

<div class="ccol-l-4 col-m-12">
        <form method="post" accept-charset="utf-8" action="<?php echo site_url("workpackage"); ?>">
           <?php echo form_dropdown('wptypes', $wptypes, set_value('wptypes'), 'id="wptypes" class="form-select" onchange="this.form.submit()"'); ?>
        </form>
     </div>

感谢您的回答:)

3 个答案:

答案 0 :(得分:1)

  

嗯,这里有3个选项:

  1. 使用浏览器本地存储 @Rohan Kumar
  2. 使用Cookie存储您的数据 @ user8175473
  3. 使用PHP / CodeIgniter SESSION存储您的数据 @Neeraj Singh:D
  4. 模式非常简单,OnSelect下拉列表获取选定值,将这些值保存在稍后可供您访问的位置。检查微粒储存是否具有任何类型的值,从那里获取那些值。再次回到内线下拉..

    我在这里告诉你: 我们如何使用CodeIgniter Session + jQuery来取回你的下拉值。

    您的HTML或观看次数:

    <form method="post" accept-charset="utf-8" action="<?php echo site_url("workpackage"); ?>">
        <input type="hidden" name="<?=$this->security->get_csrf_token_name()?>" value="<?=$this->security->get_csrf_hash()?>">
        <div class="form-group">
            <label for="name">Client</label>
            <?php echo form_dropdown('wptypes', $wptypes, set_value('wptypes'), 'id="wptypes" class="form-select" onchange="this.form.submit()"'); ?>
        </div>
    </form>
    <script type="text/javascript">
        $(document).ready(function(){
            // wptypes select box
            var $wptypes     = $('select#wptypes');
            // check on load of wptypes value exist in session
            var _prev_sel_val = "<?=$this->session->userdata('wptypes') ? $this->session->userdata('wptypes') :  '';?>";
            // if not empty, set value
            if(_prev_sel_val){
                $wptypes.val(_prev_sel_val);
            }
        });
    </script>
    

    您的控制器(示例):

    <?php
    // security first always....
    (defined('BASEPATH') or exit('No direct script access allowed'));
    /**
     * Class Controller
     *
     * Class workpackage Controller to handle login & logout
     */
    class Workpackage extends CI_controller
    {
        /**
         * Class Constructor
         */
        public function __construct()
        {
            // execute parent class constructor
            parent::__construct();
        }
        /**
         * workpackage, Default method to execute if method name missing
         * @return [type] [description]
         */
        public function index()
        {
            // only on POST Request
            if ($this->input->post('wptypes')) {
                // drop down value
                $wptypes = array(
                    'wptypes' => $this->input->post('wptypes', TRUE)
                );
                // set in session
                $this->session->set_userdata( $wptypes );
                // your other stuff do..... here...
            }
        }
    }
    /* End of file workpackage.php */
    /* Location: ./application/controllers/workpackage.php */
    

答案 1 :(得分:0)

您可以使用$.cookie获取并设置所选的项目值。

<select id="yourid">
</select>

$("yourid").on("change", function(){
   $.cookie("selectedItem", $(this).val())  
})

// when you return to page

var val = $.cookie("selectedItem");
if(val != null)
{
   $('#yourid option[value="' + val + '"]').attr('selected', 'selected');
}

答案 2 :(得分:0)

您必须通过在视图中添加条件来设置帖子值,例如

<?php echo form_dropdown('wptypes', $wptypes,
       // check if the post wptypes is set then make that option selected
       (isset($_POST['wptypes']) ? $_POST['wptypes'] : ''),
      'id="wptypes" class="form-select" onchange="this.form.submit()"'); ?>

此外,如果页面不同,请使用localStorage将当前选项保存在其中。

从html中删除onchange

<div class="ccol-l-4 col-m-12">
    <form method="post" accept-charset="utf-8" action="<?php echo site_url("workpackage"); ?>">
       <?php echo form_dropdown('wptypes', $wptypes, set_value('wptypes'), 'id="wptypes" class="form-select"'); ?>
    </form>
 </div>

在JS中添加以下代码

$(function(){
    // add on change event
    $('#wptypes').on('change',function(){
       if(this.value){ // if this value is not blank
           // set value in localStorage
           localStorage.setItem('wptypes',this.value);
           // finally, form submits
           this.form.submit();
       }
    });
    // Code to make selected wptypes options
    localStorage.getItem('wptypes') && // if value exists in localStorage
        $('#wptypes').val(localStorage.getItem('wptypes')) // set it
});