select标签在修改内容时,会触发change事件,在该事件中可以获取修改之后的值,而修改之前的值是获取不到的。
目前有一个需求是,当用户修改select的内容时,弹出确认框询问用户是否确认修改,如果用户点击取消,则select标签的值重置为修改之前的值。
解决思路,为select标签添加hook属性,用于保存select标签当前的值,当select触发change事件时,hook属性的值保存了修改之前select的值。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<select id="demo">
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
</select>
<script src="http://apps.bdimg.com/libs/jquery/2.1.4/jquery.min.js"></script>
<script>
$("#demo").change(function () {
var val = $(this).val();
var res = confirm("您确认修改为"+val+"么?");
if(res == true){
//确认
$(this).attr("hook",val);
}else{
//取消
if(typeof $(this).attr("hook") == "undefined"){
//尚未做过选择,重置为默认选择
$(this).val($(this).children("option:first-child").val());
}else{
//重置为修改之前的选择
$(this).val($(this).attr("hook"));
}
}
});
</script>
</body>
</html>