如何在 onchange 之前从下拉列表中获取先前选择的值
How to get the previous selected value from a dropdown before onchange
我知道这是最简单的问题,但找不到正确答案。
<div class="col-12 col-md-4 col-lg-5 mt10-xs">
<p>Status</p>
<div class="form-group FL mr20 w100-xs">
<div class="rsi-custom-select">
<select class="form-control" id="statustab_{{ $row['placementkey'] }}" class="select2-selecting" onchange="listingByStatus(this,'{{ $row['placementkey'] }}')">
@foreach($placementStatus as $pl)
<option @if($pl['placement_status_id'] == $row['statusid'] ) selected @endif value="{{$pl['placement_status_key']}}">{{$pl['placement_status']}}</option>
@endforeach
</select>
</div>
</div>
</div>
这是我的 onchange
函数。在此如何从我的 select 框中获取先前的选定值?
function listingByStatus(ths,key){
var thisSelect = $('#statustab_'+key).text();
var statusText = $( "#statustab_"+key+" option:selected" ).text();
var currentval = $( "#statustab_"+key+" option:selected" ).val();
}
您可以在您的页面上包含一个隐藏的输入字段
<input type="hidden" id="previous_value" name"previous_value" value="abc"/>
然后在您的脚本中,您可以像任何其他输入一样访问:
var previous = $('#previous_value').val();
onchange事件发生后设置:
$('#statustab_{{ $row['placementkey'] }}').addEventListener('change', function (e) {
$('$previous_value').val(e.value)
})
当元素获得焦点时使用data()
保存原始值:
$('.select2-selecting').on('focusin', function(){
console.log("Saving value " + $(this).val());
$(this).data('val', $(this).val());
});
然后在您的 onchange
函数中获取保存的旧值:
function listingByStatus(ths,key){
var thisSelect = $('#statustab_'+key).text();
var statusText = $( "#statustab_"+key+" option:selected" ).text();
var currentval = $( "#statustab_"+key+" option:selected" ).val();
var prev = $('.select2-selecting').data('val'); //old value
console.log("Old value " + prev);
}
将focus
事件与change事件结合起来实现你想要的:
这样试试:
(function () {
var previous;
$("select[name=test]").focus(function () {
// Store the current value on focus, before it changes
previous = this.value;
}).change(function() {
// Do something with the previous value after the change
document.getElementById("oldData").innerHTML = "<b>Previous: </b>"+previous;
previous = this.value;
});
})();
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.4.3/jquery.min.js"></script>
<select name="test">
<option value="one">one</option>
<option value="two">two</option>
<option value="three">three</option>
<option value="four">four</option>
</select>
<div id="oldData"></div>
这将为您提供最后选择的值。
希望对您有所帮助!
- 使用
data-*
存储旧值
- 获取
data-*
作为旧值,选择的选项作为新值
$('select').change(function(){
var oldvar = $(this).attr('data-old') !== typeof undefined? $(this).attr('data-old') :"";
var newval = $("option:selected",this).text();
$(this).attr('data-old',newval)
console.log("prev value :" + oldvar)
console.log("curr value :" + newval)
}).change();
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<select>
<option>1</option>
<option>2</option>
<option>3</option>
</select>
试试下面的代码。希望对你有帮助。
$('select').change(function(){
var oldval = $(this).prop('data-old') !== undefined ? $(this).prop('data-old') : "";
var newval = $("option:selected",this).text();
console.log("previous value : " + oldval);
console.log("current value : " + newval);
$(this).prop('data-old',newval);
}).change();
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<select>
<option>Apple</option>
<option>Mango</option>
<option>Banana</option>
<option>Orange</option>
</select>
我知道这是最简单的问题,但找不到正确答案。
<div class="col-12 col-md-4 col-lg-5 mt10-xs">
<p>Status</p>
<div class="form-group FL mr20 w100-xs">
<div class="rsi-custom-select">
<select class="form-control" id="statustab_{{ $row['placementkey'] }}" class="select2-selecting" onchange="listingByStatus(this,'{{ $row['placementkey'] }}')">
@foreach($placementStatus as $pl)
<option @if($pl['placement_status_id'] == $row['statusid'] ) selected @endif value="{{$pl['placement_status_key']}}">{{$pl['placement_status']}}</option>
@endforeach
</select>
</div>
</div>
</div>
这是我的 onchange
函数。在此如何从我的 select 框中获取先前的选定值?
function listingByStatus(ths,key){
var thisSelect = $('#statustab_'+key).text();
var statusText = $( "#statustab_"+key+" option:selected" ).text();
var currentval = $( "#statustab_"+key+" option:selected" ).val();
}
您可以在您的页面上包含一个隐藏的输入字段
<input type="hidden" id="previous_value" name"previous_value" value="abc"/>
然后在您的脚本中,您可以像任何其他输入一样访问:
var previous = $('#previous_value').val();
onchange事件发生后设置:
$('#statustab_{{ $row['placementkey'] }}').addEventListener('change', function (e) {
$('$previous_value').val(e.value)
})
当元素获得焦点时使用data()
保存原始值:
$('.select2-selecting').on('focusin', function(){
console.log("Saving value " + $(this).val());
$(this).data('val', $(this).val());
});
然后在您的 onchange
函数中获取保存的旧值:
function listingByStatus(ths,key){
var thisSelect = $('#statustab_'+key).text();
var statusText = $( "#statustab_"+key+" option:selected" ).text();
var currentval = $( "#statustab_"+key+" option:selected" ).val();
var prev = $('.select2-selecting').data('val'); //old value
console.log("Old value " + prev);
}
将focus
事件与change事件结合起来实现你想要的:
这样试试:
(function () {
var previous;
$("select[name=test]").focus(function () {
// Store the current value on focus, before it changes
previous = this.value;
}).change(function() {
// Do something with the previous value after the change
document.getElementById("oldData").innerHTML = "<b>Previous: </b>"+previous;
previous = this.value;
});
})();
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.4.3/jquery.min.js"></script>
<select name="test">
<option value="one">one</option>
<option value="two">two</option>
<option value="three">three</option>
<option value="four">four</option>
</select>
<div id="oldData"></div>
这将为您提供最后选择的值。
希望对您有所帮助!
- 使用
data-*
存储旧值 - 获取
data-*
作为旧值,选择的选项作为新值
$('select').change(function(){
var oldvar = $(this).attr('data-old') !== typeof undefined? $(this).attr('data-old') :"";
var newval = $("option:selected",this).text();
$(this).attr('data-old',newval)
console.log("prev value :" + oldvar)
console.log("curr value :" + newval)
}).change();
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<select>
<option>1</option>
<option>2</option>
<option>3</option>
</select>
试试下面的代码。希望对你有帮助。
$('select').change(function(){
var oldval = $(this).prop('data-old') !== undefined ? $(this).prop('data-old') : "";
var newval = $("option:selected",this).text();
console.log("previous value : " + oldval);
console.log("current value : " + newval);
$(this).prop('data-old',newval);
}).change();
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<select>
<option>Apple</option>
<option>Mango</option>
<option>Banana</option>
<option>Orange</option>
</select>