简体   繁体   English

多选会话存储

[英]Session Storage on Multiple selects

I have a list of six dropdowns each dependent on the prior selection that then pulls from txt files on the server. 我有六个下拉列表,每个下拉列表取决于先前的选择,然后从服务器上的txt文件中提取。

The issue I am having is with the session storage. 我遇到的问题是会话存储。 I do not want to "get" the storage unless all items have been set. 除非已设置所有项目,否则我不想“获取”存储。 Which seems to work this way, however it is still pulling the first "model" select. 这似乎以这种方式工作,但是它仍在拉第一个“模型”选择。 How can I change this so that it will only populate ALL of the select boxes if all selects have been chosen. 如何更改此设置,以便仅在所有选择均被选中的情况下才填充所有选择框。 Or so at least the Model will not display as it is now? 还是至少模型不会像现在这样显示?

HTML: HTML:

  <div id="shop_vehicle_container">
         <div class="sel_container">
            <div class="sel_label">
<div id="first-half">
              <p class="step1-text">Step 1: Select Your Vehicle</p>
            </div>
              <p class="step1-text">Step 2: Select Parts Diagram</p>
          </div>-->
<div id="car-select">
            <select id="vehic_sel_model">
               <option value="">Model</option>
               <option value='Accord'>Accord</option>
               <option value="AccordCrosstour">Accord Crosstour</option>
               <option value="Civic">Civic</option>
               <option value="CivicdelSol">Civic del Sol</option>
               <option value='CR-V'>CR-V</option>
               <option value="CRX">CRX</option>
               <option value="CR-Z">CR-Z</option>
               <option value="Crosstour">Crosstour</option>
               <option value="Element">Element</option>
               <option value="Fit">Fit</option>
               <option value="Insight">Insight</option>
               <option value="Odyssey">Odyssey</option>
               <option value="Passport">Passport</option>
               <option value="Pilot">Pilot</option>
               <option value="Prelude">Prelude</option>
               <option value="Ridgeline">Ridgeline</option>
               <option value="S2000">S2000</option>
              </select>
            <select id="vehic_sel_year">
               <option value="">Year</option>
              </select>
            <select id="vehic_sel_trim">
               <option value="">Trim Level</option>
              </select> 
           </div> 
</div>
<div id="second-half">
<div id="diagram-select">
              Step 2: Select Parts Diagram
          </div>
<div id="parts-select">
           <select id="vehic_sel_section">
              <option value="">Section</option>
             </select>
            <select id="vehic_sel_group">
              <option value="">Group</option>
             </select>
            <select id="vehic_sel_subgroup" onchange="if (this.value) window.location.href=this.value">
              <option value="">SubGroup</option>
            </select>
       <div id="HideButton" class="button-div" style="display:none">
          <button  class="MySelect" onclick="document.location.href =document.getElementById('vehic_sel_subgroup').value;" />My selection</button>
       </div>
</div>
      </div>
       </div>
    </div>

Javascript: 使用Javascript:

$(function() {
        $('#vehic_sel_model').change(function() {
            sessionStorage.setItem('model', this.value);

        });

       $('#vehic_sel_year').change(function() {
            sessionStorage.setItem('year', this.value);

        });

       $('#vehic_sel_trim').change(function() {
            sessionStorage.setItem('trim', this.value);

        });

       $('#vehic_sel_section').change(function() {
            sessionStorage.setItem('section', this.value);

        });

       $('#vehic_sel_group').change(function() {
            sessionStorage.setItem('group', this.value);

        });
       $('#vehic_sel_subgroup').change(function() {
            sessionStorage.setItem('subgroup', this.value);

        });


       if(sessionStorage.getItem('subgroup')){
            $('#vehic_sel_model').val(sessionStorage.getItem('model'));
            $("#vehic_sel_year").load("/v/vehicle-selection/cache/" + sessionStorage.getItem('model') + ".txt", function(){
              $('#vehic_sel_year').val(sessionStorage.getItem('year'));
        });
             $("#vehic_sel_trim").load("/v/vehicle-selection/cache/" + sessionStorage.getItem('year') + ".txt", function(){
                $('#vehic_sel_trim').val(sessionStorage.getItem('trim'));
        });
             $("#vehic_sel_section").load("/v/vehicle-selection/cache/" + sessionStorage.getItem('trim') + ".txt", function(){
                $('#vehic_sel_section').val(sessionStorage.getItem('section'));
        });
             $("#vehic_sel_group").load("/v/vehicle-selection/cache/" + sessionStorage.getItem('section') + ".txt", function(){
                $('#vehic_sel_group').val(sessionStorage.getItem('group'));
        });
             $("#vehic_sel_subgroup").load("/v/vehicle-selection/cache/" + sessionStorage.getItem('group') + ".txt", function(){
                $('#vehic_sel_subgroup').val(sessionStorage.getItem('subgroup'));
                    $("#HideButton").removeAttr("style");
        });
      }
    });

Try adding name attribute to select elements corresponding to name of sessionStorage item to set, using $(document).change() to check if all select elements have been selected at least once 尝试添加name属性以select与要设置的sessionStorage项目名称相对应的元素,使用$(document).change()来检查是否已至少选择一次所有select元素

$(function() {

  var arr = [], selects = $("[id^=vehic]"),
  handleSelect = function() {
      if (arr.indexOf(this.id) === -1) {
        arr.push(this.id)
      };                                 
  };

  $(document).change(function() {
    if (arr.length === selects.length) {
      selects.each(function(i, el) {
        sessionStorage.setItem(this.name, this.value); 
        $(this).load("/v/vehicle-selection/cache/" 
          + sessionStorage.getItem(this.name) + ".txt", function() {
            $(this).val(sessionStorage.getItem(this.name));
        }
      });
      $("#HideButton").removeAttr("style");
    }        
  });

  selects.change(handleSelect);

});

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM