浏览器前进后退对下拉框数据的丢失的问题,典型的为省市下拉框联动时城市数据的丢失。省市联动一般的实现为城市在省份的选择后js加载。

那么每次城市的改变只需要重新加载新的城市数据并更新下拉框即可:

下拉函数

function ReloadCities() {
    var $ddlCity = $("#CityId");
    var selec = $("#ProvinceId").val();
    if (selec) {
        $ddlCity.find("option").remove();
        var url = "@(Url.Action("CityListByProvinceId", "Common", new { area = "Default" }))";
        $.post(url, { 'id': selec }, function (data) {
            $.each(data, function (i, item) {
                $("<option></option>").val(item.AddressId).text(item.AddressName).appendTo($ddlCity);
            });
        }, "json");
    }
    else {
        $ddlCity.find("option").remove();
        $("<option></option>").val("").text("--请选择--").appendTo($ddlCity);
    }
}

正常使用没有问题,但是当用户跳转到其它页面再回退时选中丢失。关于回退普及下面几个关键的知识点:

  1. 一般都会自动使用缓存的数据,除非禁用缓存才会重新从服务端获取数据。
  2. 大部分浏览器在默认设置下都会保存每个元素的value,也就是用户输入的数据。
  3. 具体的知识可以查看widnow对象的history。

知道了以上几点后,首先,为什么城市列表会丢失,因为它是js操作dom的结果,所以增加触发代码:

触发代码

$(document).ready(function () {
            if (!$("#CityId").val()) {
                ReloadCities();
            }});

城市是加载出来了,但是选中的状态丢了。怎么办呢,抱着绕开这个复杂的城市元素的思路,直接放个隐藏的input来保存前后的value,那么解决方案就出来了。

同步隐藏input的代码

$("#CityId").change(function () {
                $("#cityIdHidden").val($("#CityId").val());
            });

在重新加载城市列表时从隐藏input中获取value值,新代码为红色段

function ReloadCities() {
           var $ddlCity = $("#CityId");
           var selec = $("#ProvinceId").val();
           if (selec) {
               $ddlCity.find("option").remove();
               var url = "@(Url.Action("CityListByProvinceId", "Common", new { area = "Default" }))";
               $.post(url, { 'id': selec }, function (data) {
                   $.each(data, function (i, item) {
                       $("<option></option>").val(item.AddressId).text(item.AddressName).appendTo($ddlCity);
                   });
                   if ($("#cityIdHidden").val()) {
                       $("#CityId").val($("#cityIdHidden").val());
                   }
               }, "json");
           }
           else {
               $ddlCity.find("option").remove();
               $("<option></option>").val("").text("--请选择--").appendTo($ddlCity);
           }
       }

都搞定。

本文转自today4king博客园博客,原文链接:http://www.cnblogs.com/jinzhao/p/3184462.html,如需转载请自行联系原作者

浏览器前进后退对下拉框数据的丢失(省市联动实现和例子)相关推荐

  1. Ext JS - Combobox 加载下拉框数据 级联下拉框

    Combobox 加载下拉框数据 点击下拉框,数据从后台加载,是很常见的需求.如下图: View 中下拉框 dockedItems : [ {dock : 'top',xtype : 'toolbar ...

  2. thymeleaf(th:each th:selected) 从后台动态获取下拉框数据回显及选中

    thymeleaf(th:each th:selected) 从后台动态获取下拉框数据回显及选中 <select οnchange="getChilds(this.value)&quo ...

  3. 绑定多个下拉框数据(关系式)

    绑定多个下拉框数据(关系式) ----------------------------------------- 开发工具与关键技术:Visual Studio 2015 C# 作者:林敏静 撰写时间 ...

  4. Excel导出表格时,下拉框数据长度超过255出现的问题及解决办法

    文章目录 1.直接添加下拉框,数据量过多会有问题 2.使用隐藏sheet的方式实现 3.多选下拉框 4.参考: 1.直接添加下拉框,数据量过多会有问题 /*** 创建下拉列表选项(单元格下拉框数据小于 ...

  5. 利用ajax实现二级联动下拉框6,Ajax实现二级联动菜单

    本文实例为大家分享了Ajax二级联动菜单的具体代码,供大家参考,具体内容如下 index.jsp 二级菜单联动演示 var req; window.οnlοad=function() {//页面加载时 ...

  6. Select下拉框实现中国省市区三级联动

    JS Select下拉框实现中国省市区三级联动 联动效果 以内蒙古自治区为例 distpicker.js资源获取 https://pan.baidu.com/s/1S17KyRmPfz6WYaYUV1 ...

  7. 单个下拉框数据保持问题

    1.在工作中遇到了数据保持问题,查询时当查询返回结果页面时,页面上的下拉框选中的值仍然为当时的查询条件,例如下拉框中存放河北省所有的城市放在city数组中, 第一中方法为下面所示: <selec ...

  8. easyui 添加下拉框数据_电商教父:关于淘宝关键词点击率以及提升数据的方法...

    对于卖家来说,做好店铺的运营推广,了解店铺的发展行情是非常有必要的.其中,关键词的点击率就是一个不可忽略的数据,我们在哪里可以查看关键词点击率呢? 打开计划-关键词上有点击量显示,可以由高到低显示,可 ...

  9. easyui 添加下拉框数据_功能更新:熟用仪表盘这个功能,你可以少建90%的数据报表...

    你也在为一大堆工作报表头疼吗? 你也在为抓不到重点烦躁吗? 你也在烦恼报表的无关信息太多吗? 不用担心,筛选组件帮你一次性解决所有难题! 仪表盘新增筛选组件,可将多个报表汇总在一个查询入口进行查询.一 ...

最新文章

  1. 19.04.27--作业 打字游戏
  2. 独家 | 准备数据时如何避免数据泄漏
  3. 通过超链接访问后台方法_超有用的公众号超链接,3分钟学会2种超链接方法,特别实用!...
  4. 整理:Android apk 框架 布局 集锦
  5. 乐山市计算机学校太坑,乐山市计算机学校小规矩成就大素养
  6. 给iOS库添加Cocoapods支持
  7. 理解 TCP(二):报文结构 1
  8. neo4j 查询同一节点的两个上级_链表的魅力:两个单向链表的第一个交点
  9. 【LeetCode 剑指offer刷题】动态规划与贪婪法题7:47:礼物的最大价值
  10. paip.提升安全性-------生成一个安全的验证码
  11. 微信三级分销系统开发规则及源码
  12. 在三维坐标中给出三个点,求三个点所在平面的圆心和圆心坐标
  13. php接入腾讯云短信SDK
  14. 【源码】基于部分随机PSO的光伏MPPT算法
  15. oracle 去除空值函数,Oracle学习笔记:删除数据空格(trim、ltrim、rtrim函数)
  16. Android手机应用开发(一) | 基本的UI界面设计
  17. 2019百日打卡DAY12
  18. 电脑如何录屏?分享4个屏幕录制的好方法,建议收藏
  19. 希腊字母英文简写与常用指代意义
  20. 安卓打包出现“app:processReleaseManifest“问题的一种解决方案

热门文章

  1. eclipse编辑窗口不见了(打开左边的java、xml文件,中间不会显示代码)
  2. 【斗医】【18】Web应用开发20天
  3. 为什么你不应该自行更新 Drupal 网站?
  4. 数据库创建索引的原则
  5. Android_CodeWiki_01
  6. python实现nginx图形界面管理
  7. 斯坦佛编程教程-Unix编程工具(四)
  8. 路由器互联端口处于不同网段的路由方法和原理
  9. MYSQL 查询数据排序数据和分组数据
  10. 黑客内参告诉你一个:设计师用div+css 必须知道的网页布局类型