Javascript 获取onchange事件jQuery之后下拉列表的上一个值
在onchange事件之后,如何获取自动生成的下拉菜单的上一个值?范例Javascript 获取onchange事件jQuery之后下拉列表的上一个值,javascript,jquery,dropdown,Javascript,Jquery,Dropdown,在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">P
<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>
我想要获取上一个值的原因是,我需要检查,如果下拉值为空(N/a),则我需要执行一些操作,如果该值不为空,则我需要执行另一个操作,但当该值不为空但与上一个值相同时,则不执行任何操作
这些操作是注释中的操作。谢谢
更新自动生成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)
});
})
这是小提琴
编辑:在自动生成的下拉列表中,您可以添加自定义类,例如“myselectbox”
通过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)
});
})
这是小提琴
编辑:在自动生成的下拉列表中,您可以添加自定义类,例如“myselectbox”
使用
data
将数据存储为全局变量:
$("#Diabetes_UK_3147").on("focus",function(){
$(this).data('previous',$(this).val());
}
然后您可以通过$(“#Diabetes_UK_3147”)访问上一个值代码>
使用数据
存储数据,而不是全局变量:
$("#Diabetes_UK_3147").on("focus",function(){
$(this).data('previous',$(this).val());
}
然后您可以通过$(“#Diabetes_UK_3147”)访问上一个值代码>
使用数据-*
如下。另外,删除内联事件处理程序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
}
});
使用数据-*
如下。另外,删除内联事件处理程序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中,并在每次更改时更新它。您是如何生成菜单的?页面加载时选择了哪个值?将以前的值存储在var中,并在每次更改时更新它。答案很好,但只有在更改时触发模糊时才起作用,这不是用户为什么select[id=Diabetes\u UK\u 3147]
not#Diabetes\u UK\u 3147
?这会起作用,但为什么焦点事件会起作用?您只需将代码存储在“更改”事件处理程序中的上一个值,并在首次创建select时将其存储。@MattBrowne OP使用术语“自动生成”。没有人确定这是在页面加载还是在页面加载之后,因此页面加载中可能不存在。这两个答案都是最安全的。@MattBrownechange
事件是在值更改后触发的,因此您无法访问旧值。答案不错,但只有在更改时触发模糊时才起作用,这不是用户为什么选择[id=Diabetes\u UK\u 3147]
不是#糖尿病(英国)3147
?这会起作用,但为什么会是焦点活动?您只需将代码存储在“更改”事件处理程序中的上一个值,并在首次创建select时将其存储。@MattBrowne OP使用术语“自动生成”。没有人确定这是在页面加载还是在页面加载之后,因此页面加载中可能不存在。两个答案都是最安全的。@MattBrownechange
事件是在值更改后触发的,因此您无法访问旧值。
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")
});