在 onchange 事件 jQuery 后获取下拉列表的先前值
Get previous value of dropdown after onchange event jQuery
如何在 onchange 事件后获取自动生成的下拉菜单的先前值?例子
<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) 然后我需要执行一些操作,如果该值不为空则我需要执行另一个操作,但是当该值不为空但与之前的值相同时,则什么都不做。
那些操作是评论中的那些。谢谢
UPDATE ID 和名称是自动生成的。这就是为什么我有一个
onchange="return verifyUpdateResponseGross(this);"
这将处理更改并执行必要的操作。
这是自动生成的
最佳方法 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)
});
})
这里是fiddlehttp://jsfiddle.net/Laa2hL3b/
已编辑:在自动生成的下拉列表中,您可以添加自定义 class,例如 "myselectbox"
<select class="form-control myselectbox"
并在此处进行更改
$(".myselectbox").on(/* other code remain same */
使用data
存储数据而不是全局变量:
$("#Diabetes_UK_3147").on("focus",function(){
$(this).data('previous',$(this).val());
}
然后你可以通过$("#Diabetes_UK_3147").data('previous');
访问之前的值
使用 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
}
});
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")
});
如何在 onchange 事件后获取自动生成的下拉菜单的先前值?例子
<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) 然后我需要执行一些操作,如果该值不为空则我需要执行另一个操作,但是当该值不为空但与之前的值相同时,则什么都不做。
那些操作是评论中的那些。谢谢
UPDATE ID 和名称是自动生成的。这就是为什么我有一个
onchange="return verifyUpdateResponseGross(this);"
这将处理更改并执行必要的操作。
这是自动生成的
最佳方法 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)
});
})
这里是fiddlehttp://jsfiddle.net/Laa2hL3b/
已编辑:在自动生成的下拉列表中,您可以添加自定义 class,例如 "myselectbox"
<select class="form-control myselectbox"
并在此处进行更改
$(".myselectbox").on(/* other code remain same */
使用data
存储数据而不是全局变量:
$("#Diabetes_UK_3147").on("focus",function(){
$(this).data('previous',$(this).val());
}
然后你可以通过$("#Diabetes_UK_3147").data('previous');
使用 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
}
});
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")
});