我试图保持选择相同的选项值,即使在点击下拉列表后,它只是继续说未定义。这是我的代码:
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;
谢谢
答案 0 :(得分:0)
我不熟悉bootstrap所以我无法解释这一点,但很明显,你的问题是on('shown.bs.select', ...)
没有触发,所以{{1} }仍然是previous_value
。
然而,符合您需求的解决方案非常简单:您必须在开始时无条件设置undefined
。
以下是您的代码的修改版本,其中previous_value
不仅显示新值和以前的值,而且下拉列表始终保持不变,就像您要求的那样:
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;