如何在onchange事件后获取AUTO-Generated下拉菜单的上一个值?实施例
<select class="form-control" name="Diabetes_UK_3147" id="Diabetes_UK_3147" onchange="return verifyUpdateResponseGross(this);">
<option value="Yes">Yes</option>
<option value="Possibly">Possibly</option>
<option value="">N/A</option>
</select>
我有这个功能
function verifyUpdateResponseGross(val)
{
var updated_response = val.value;
var colheader = val.name
var before_gross = $('#new_gross').val();
$.ajax({
url: "qa/api/crm/getquestion",
type: 'GET',
data: {'colheader':colheader},
success: function(result){
// var costperlead = result;
// if(updated_response != "")
// {
// var new_gross_amount = parseFloat(before_gross) + parseFloat(costperlead);
// $('#new_gross').val(new_gross_amount);
// }
// else
// {
// var new_gross_amount = parseFloat(before_gross) - parseFloat(costperlead);
// $('#new_gross').val(new_gross_amount);
// }
// console.log(costperlead);
}});
}
我想获得前一个值的原因是我需要检查如果下拉值为空(N / A),那么我需要执行一些操作,如果值不为空,那么我需要执行另一个操作,但是当值gis不是空的但是与之前的值相同时,则不执行任何操作。
这些操作是评论中的操作。感谢
更新自动生成ID和名称。这就是为什么我有一个
onchange="return verifyUpdateResponseGross(this);"
这将处理更改并执行必要的操作。
这是自动生成的
答案 0 :(得分:2)
通过jquery做到最好的方法:
$(document).ready(function(){
var previous;
$("#Diabetes_UK_3147").on("focus click",function () {
previous = this.value; // Old vaue
}).change(function() {
var value = this.value; // New Value
$('span').text('Old Value : '+previous+' New Value : '+value)
});
})
这里是小提琴http://jsfiddle.net/Laa2hL3b/
已编辑:在自动生成的下拉列表中,您可以添加自定义类,例如“myselectbox”
<select class="form-control myselectbox"
并在此处进行更改
$(".myselectbox").on(/* other code remain same */
答案 1 :(得分:1)
使用data
来存储数据而不是全局变量:
$("#Diabetes_UK_3147").on("focus",function(){
$(this).data('previous',$(this).val());
}
然后您可以按$("#Diabetes_UK_3147").data('previous');
答案 2 :(得分:0)
使用data-*
,如下所示。此外,删除内联事件处理程序onchange="return verifyUpdateResponseGross(this);"
并以不引人注目的方式执行。
var $select = $("#Diabetes_UK_3147");
$select.data("previous-val", $select.val());
$select.on("change", function() {
var current_value = $(this).val();
if (current_value == "") {
//Do stuff when empty
} else if ( current_value != $(this).data("previousVal") && current_value != "" ) {
//Do stuff when not empty and current value != previous value
}
});
答案 3 :(得分:0)
var $select = $("#my-select");
$select.data("prevVal", $select.val()).data("currVal", $select.val()).on("change", function () {
var $this = $(this);
$this.data("prevVal", $this.data("currVal")).data("currVal", $this.val());
// do your staff here. Previous value is available in $this.data("prevVal")
});