• selected 刷新页面后selected选中的值保持不表(thinkphp 从控制器assign 传值到js)


    昨晚解决select 刷新页面以后选择的值保持不变,要想让seleted不变,有两种思路,

    1,在提交表单的时候,将所选择的option的属性设为checked .

    2.将option的value或者index带走,事实上这个提交的时候直接就带走了value,创建一个数组,php 用array_search()找到value的index的值,刷新过后再将index的值传入,使用jquery.在页面加载完毕的时候将该index的值选为checked。

    我选择的是第二种方法。代码如下,亲测有效;

    前台代码(粗体为关键代码)

    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="utf-8">
    <title>后台管理</title>
    <link rel="stylesheet" href="__CSS__/main.css" >
    <link rel="stylesheet" href="__CSS__/validate.css">
    <script type="text/javascript" src="__JS__/jquery.js"></script>
    <script type="text/javascript" src="__JS__/common.js"></script>
    <script type="text/javascript" src="__JS__/validate.js"></script>
    {$code}
    </head>
    <body>
    <div class="container">
    <form name="form1" action="__CONTROLLER__/info">
    <h1>学员信息列表&nbsp;
    <select id="static" name="rank" onchange="document.form1.submit()" >
    <option value="id" >按注册时间查看</option>
    <option value="sign">按签到次数查看</option>
    <option value="score">按积分数查看</option>
    </select>
    </h1></form>
    <table cellpadding="3" cellspacing="1" align="center" class="box">
    <tr>
    <th width="50px">头像</th>
    <th width="">账号</th>
    <th>姓名</th>
    <th width="">性别</th>
    <th width="">年龄</th>
    <th width="">电话</th>
    <th width="">城市</th>
    <th width="">店铺</th>
    <th width="">积分</th>
    <th width="">签到次数</th>
    </tr>
     <volist name='list' id='vo'>
       <tr class="list">
        <td align="center"><img width="50px" src="__IMG__/head/{$vo.picture}"/></td>
        <td align="center">{$vo.account}</td>
        <td align="center">{$vo.name}</td>
        <td align="center">{$vo.gender}</td>
        <td align="center">{$vo.age}</td>
        <td align="center">{$vo.phone}</td>
        <td align="center">{$vo.city}</td>
        <td align="center">{$vo.shop}</td>
        <td align="center">{$vo.score}</td>
        <td align="center">{$vo.sign}</td>
       </tr>
     </volist>
    </table>
    <div> {$pap}</div>
    </div>
    </body>
    </html>
    由于我使用的人thinkphp框架,所以设计一个问题就是从控制器穿变量到前台js代码的问题,如果直接在在控制器中 $this->assign('code',$code);

    在前台js中调用{$code}是没有作用的,所以此时需要在后台直接将<script>.....<script/>中间的代码全部assign到变量。

    控制器处理代码如下:

    后台代码

     public function info()
         {
            $shop=M('stu');
            $count = $shop->count();//查询满足要求的总记录数
            $Page = new \Think\Page($count,6);// 实例化分页类 传入总记录数和每页显示的记录数(2)
            $Page->setConfig('prev','上一页');
            $Page->setConfig('next','下一页');
            $Page->setConfig('last','尾页');
            $Page->setConfig('first','首页');
            $show = $Page->show();// 分页显示输出
             if(I('rank'))//下拉列表选择查看方式
            {
                if(I('rank')=='id')
                {
                $list = $shop->limit($Page->firstRow.','.$Page->listRows)->select();
                }
                else{
                     $list = $shop->limit($Page->firstRow.','.$Page->listRows)->order(I('rank') .' desc')->select();
                }
                 
            }
            else
            {
                $list = $shop->limit($Page->firstRow.','.$Page->listRows)->select();
            }
            for($i=0;$i<$count;$i++)//对取出分页数据进行处理,因为之前的签到次数初始值为-1
            {
                 $list[$i]['sign']=$list[$i]['sign']+1;
            }
            $a=array('id','sign','score');
            $index=array_search(I('rank'),$a);
            $code='<script type="text/javascript">
            $(document).ready(function(){
               var selectedIndex = '.$index.';
                 if(selectedIndex != null) {
                 document.getElementById("static").selectedIndex = selectedIndex;
                 } ;
            })  
               </script>' ;
            $this->assign('code',$code);
            $this->assign('list',$list);//把各列赋值给list
            $this->assign('pap',$show);// 赋值分页输出
            $this->display(); // 输出模板
          }

  • 相关阅读:
    解决:安装SQl 2008为SQL Server代理服务提供的凭据无效
    jquery 瀑布流效果
    设置swfupload 一次只上传一个文件
    设置swfupload选择文件后不自动上传
    Sublime Text3 & MinGW & LLVM CLang 安装配置CC++编译环境
    在WINDOWS中安装使用SIGPACK(MinGW64+Sublime Text3 &Visual Studio)
    关于ThinkPHP_5 的入口文件
    centos7安装lamp环境
    ThinPHP_5的请求和响应
    MySQL的字段长度和显示宽度
  • 原文地址:https://www.cnblogs.com/yangtzewang/p/5448229.html
Copyright © 2020-2023  润新知