javascript - 单击时重置下拉列表

标签 javascript jquery

我有一个简单的下拉菜单,显示省份和城市。加载时,它首先显示省份,当我选择一个省份时,它会显示城市。

我想要的是选择省份和城市后,再次单击选择标签,它将在选择省份时再次重置。

我正在使用 localStorage 保存所选的省份和城市。

希望你能理解我。

谢谢

Codepen

function loadProvince(){
    $("#provinceCity").html("<option value=''>Select province</option>");
    for (var i=0; i<province.length; i++){
        $("#provinceCity").append("<option value='"+province[i]["id"]+"'>"+province[i]["name"]+"</option>");
    }
}


$(document).ready(function(){

    loadProvince();

    $("#provinceCity").change(function(){

        var selectedText = $("#provinceCity option:selected").text();
        if (localStorage.getItem("selectedProvince") === null) {
            localStorage.setItem("selectedProvince", selectedText);
        }else if (localStorage.getItem("selectedProvince") !== null) {
            localStorage.setItem("selectedCity", selectedText);
            var selectedProvinceCity = localStorage.getItem("selectedProvince") + "-" + localStorage.getItem("selectedCity");
            $('#provinceCity').append($('<option>', {
                value: selectedProvinceCity,
                text: selectedProvinceCity,
                selected: "selected"
            }));

            $(this).addClass("reset");
        }
        for (var i=0; i<province.length; i++){

            if ($(this).val() == province[i]["id"]){

                $("#provinceCity").empty();
                var cities = province[i]["city"];

                $("#provinceCity").html("<option value=''>Select city</option>");
                for (var j=0; j<cities.length; j++){
                    $("#provinceCity").append("<option value='"+cities[j]["id"]+"'>"+cities[j]["name"]+"</option>");
                }
            }
        }
    });
});

最佳答案

在选择选项时将省份和城市添加到localStorage。和 选择过程完成后将值分配给新变量。然后从本地存储中删除省份和城市,为下次更新准备选择框 Js文件

function showLocalStorageValues(){
  alert(localStorage.getItem("selectedProvinceCity"));
}

function loadProvince(){
   $("#provinceCity").html("<option value=''>Select province</option>");
  for (var i=0; i<province.length; i++){
    $("#provinceCity").append("<option value='"+province[i]["id"]+"'>"+province[i]["name"]+"</option>");
  }
}

$(document).ready(function(){
  $("#show").click(function(){
    showLocalStorageValues();
  });
  loadProvince();
  $("#provinceCity").change(function(){
    var selectedText = $("#provinceCity option:selected").text();
    if (localStorage.getItem("selectedProvince") === null) {
      localStorage.setItem("selectedProvince", selectedText);
    }else if (localStorage.getItem("selectedCity") === null){
      localStorage.setItem("selectedCity", selectedText);
      loadProvince();
      localStorage.setItem("selectedProvinceCity", localStorage.getItem("selectedProvince")+ "-" +selectedText);
      localStorage.removeItem('selectedProvince');
      localStorage.removeItem('selectedCity');
    }
    for (var i=0; i<province.length; i++){
      if ($(this).val() == province[i]["id"]){
        $("#clearBtn").show();
        var cities = province[i]["city"];
        $("#provinceCity").html("<option value=''>Select City</option>");
        for (var j=0; j<cities.length; j++){
          $("#provinceCity").append("<option value='"+cities[j]["id"]+"'>"+cities[j]["name"]+"</option>");
        }
      }
    }
  });
});

var province=[ 
  {
    "id": "820000",
    "name": "P1",
    "city": [ 
      {
        "id": "820001", "name": "C1P1"
      },
      {
        "id": "820002", "name": "C2P1"
      },
      {
        "id": "820003", "name": "C3P1"
      }
    ]
  },
  {
    "id": "830000",
    "name": "P2",
    "city": [ 
      {
        "id": "830001", "name": "C1P2"
      },
      {
        "id": "830002", "name": "C2P2"
      },
      {
        "id": "830003", "name": "C3P2"
      }
    ]
  }
];

HTML 文件

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<select id="provinceCity">
  <option value=''>Select province</option>
</select>
<button id="show">show saved values</button>

关于javascript - 单击时重置下拉列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49252798/

相关文章:

jquery - 基于树的导航,仅切换单击的元素 Jquery

javascript - 如何改变滚动条的颜色?

javascript - 使用 WebPack 为 Phaser.io 创建库 - 类扩展值未定义不是构造函数或 null

javascript - 如何使用在 JQuery 中完美运行的 Angular 来解决这个问题?

javascript - <a> 当存在 Javascript 时,边栏中的链接不可点击

javascript - 如何从网页大小控制网页元素大小

javascript - 是否可以以某种方式直接更改派生商店的值?

javascript - DOM 查找是阻塞的还是异步的?

javascript - node-mysql2 Final block 和connection.end()不想被调用

javascript - 基于悬停元素添加多种样式