将以前选择的值保留在下拉列表中

时间:2017-11-16 17:19:24

标签: javascript jquery

我试图保持选择相同的选项值,即使在点击下拉列表后,它只是继续说未定义。这是我的代码:



 var previous_value;
        $(".acc").on('shown.bs.select', function(){previous_value = this.value;}).change(function() {       
                if($('img').is(':visible')){               
                    if(window.confirm('Please save or data is lost')){                   
                        var t = $('.acc option:selected').val()                 
                       alert(t);
                    }else {
                       //code here              
                     }
                    }
                     else {
                      //code here        
                     }                  
            });

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<img  class = "<?php echo $i ?>" src="" alt="" height="22" width="30"> <br/>
    
    <label> AD Mgr </label><br/>
                    <select class = "acc"  >
                    <option  value="1" selected>1</option>
                    <option  value="2">2</option>
                    <option  value="3">3</option>
                     </select>
&#13;
&#13;
&#13;

谢谢

1 个答案:

答案 0 :(得分:0)

我不熟悉bootstrap所以我无法解释这一点,但很明显,你的问题是on('shown.bs.select', ...)没有触发,所以{{1} }仍然是previous_value

然而,符合您需求的解决方案非常简单:您必须在开始时无条件设置undefined

以下是您的代码的修改版本,其中previous_value不仅显示新值和以前的值,而且下拉列表始终保持不变,就像您要求的那样:

&#13;
&#13;
alert()
&#13;
var previous_value =
  $(".acc").change(function() {
    if ($('img').is(':visible')) {
      if (window.confirm('Please save or data is lost')) {
        var t = $('.acc option:selected').val();
        alert('New value: ' + t + '\nPrev value: ' + previous_value);
        $(this).find('option[value=' + previous_value + ']').prop({selected: true});
      } else {
        //code here              
      }
    } else {
      //code here        
    }
  })
  .val();
&#13;
&#13;
&#13;