昨晚解决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(); // 输出模板
      }

selected 刷新页面后selected选中的值保持不表(thinkphp 从控制器assign 传值到js)的更多相关文章

  1. 解决Vuex持久化插件-在F5刷新页面后数据不见的问题

    页面刷新后,想保存页面未保存的数据.我们总是习惯于放在浏览器的sessionStorage和localStorage中.但是用了vue后,vuex便可以被应用了. vuex优势:相比sessionSt ...

  2. vue 页面间使用路由传参数,刷新页面后获取不到参数的问题

    情况 情况再简单说明一下: 有三个页面(a-列表页面,b-内页1,c-内页2),页面a->页面b->页面c有参数传递.从a进入b后,刷新b页面拿不到a页面传进来的参数.或者b页面再进入c页 ...

  3. 刷新页面后,让控制台的js代码继续执行

    在各种限时,秒杀活动中,有个自动循环的点击的工具是很重要的. 为了方便起见,我们把Js代码放在浏览器的控制台执行,但是刷新页面后,js代码就清空了,也就无法执行. 可以用js代码实现一个不受页面刷新影 ...

  4. JS利用cookie记录当前位置实现刷新页面后还可以保持菜单栏的展开或闭合

    代码如下,重点是JS部分的代码(部分样式引用的是Bootstrapt中的):   <style> .sidebar-menu .special{ font-size: 16px; marg ...

  5. jsp登录页面,展示错误信息,刷新页面后错误依然存在解决方案

    在做登录页面的时候,通常使用form表单同步提交的方法进行提交的,也就是在form表单里去写action,如果登录失败,jsp通过jstl表达式获取错误信息展示在页面上,但是有一个问题就是,即使你刷新 ...

  6. 页面的div中有滚动条,js实现刷新页面后回到记录时滚动条的位置

    当div中绑定数据,给它一个属性overflow-y: scroll,添加长度大小,使其能够出现滚动条:每次刷新的时候滚动条总是会出现在最上方,这使我很头疼,经过查阅网上资料,返现两种方法可行.如下: ...

  7. JS刷新页面后滚动条的位置不变

    有时候,在网页中点击了页面中的按钮或是刷新了页面后,页面滚动条又 会回到顶部,想看后面的记录就又要拖动滚动条,或者要按翻页键,非常不方便,想在提交页面或者在页面刷新的时候仍然保持滚动条的位置不变,最好 ...

  8. 【Lua】遍历目录结果输出到页面中,刷新页面后出现500 Internal Server Error

    在通过lua获取目录json字符串,然后作为数据源,通过Extjs生成树的过程中,发生了一个奇怪的问题,那就是获取目录json字符串然后传递给Extjs生成树的这个过程中,一开始都是很顺利的就生成了, ...

  9. 使用element-ui的el-menu导航选中后刷新页面保持当前选中

    <el-menu :default-active=‘$route.path‘ :router=‘true‘ :unique-opened=‘true‘ :default-openeds=&quo ...

随机推荐

  1. 深入剖析tomcat 笔记——第8章 载入器

    深入剖析tomcat 笔记 目录:

  2. 在JSP中上传图片到数据库中

    第一步:建立数据库 create table test_img(id number(4),name varchar(20),img long raw); 第二步:(NewImg.html) <h ...

  3. 实现password框中显示文字提示的方式

    其实实际上实现中并不能让password中显示文字提示,但是我们在工作中有这样的需求,当没输入东西的时候,框内有提示输入密码,但是当输入东西的时候又显示的是*号,那么是如何实现的呢?其实原理很简单,就 ...

  4. Sublime Text 3 使用问题答疑

    命令面板/命令模式:ctrl+shift+pctrl+cctrl+v → ctrl+shift+v粘贴时会保持原格式(缩进)ctrl+sctrl+z撤销ctrl+y恢复撤销在当前行下面添加一行:ctr ...

  5. [转]搭建高可用mongodb集群(四)—— 分片

    按照上一节中<搭建高可用mongodb集群(三)—— 深入副本集>搭建后还有两个问题没有解决: 从节点每个上面的数据都是对数据库全量拷贝,从节点压力会不会过大? 数据压力大到机器支撑不了的 ...

  6. 前端面试题之Html和CSS

    又到了毕业季,很多小伙伴们都到了找工作的时候了,好多小伙伴问我有前端的面试题么?答:没有. 呃呃… … 小伙伴本宝宝真的没有骗你们,我从毕业到现在一直在一家公司没有换过,所以手里压根没有面试题.我们公 ...

  7. @autoreleasepool在MRC和ARC中的区别

    对于@autoreleasepool {} (1)在ARC中会销毁所有在里面创建的对象,即使你用外面的Strong指针指向他 (2)在MRC中如果有外部的强指针指向,不会销毁对象,retainCoun ...

  8. cheap gucci bags for women finish fashion jewellery has to move

    Is certainly his dresser seem or dress creation process into video clip. Bus dropped???? Especially ...

  9. 会游走的TextView

    //自定义的TextView package com.bwie.androidtest; import android.content.Context; import android.graphics ...

  10. C# SQLite编程总结

    1.如果自己手动创建了数据库和字段,则不需要再创建table,基本流程: 1)SQLiteConnectionStringBuilder sb = new SQLiteConnectionString ...