有一个包含5个选项的下拉列表。目前,选择了选项2.用户现在选择选项4. onchange事件被触发,该事件被一个JS函数捕获,该函数监听select上的onchange。
在JS函数中,我可以使用 selectedIndex 属性轻松检查用户选择的选项的索引。但是,我还想知道用户更改它的原始值是多少从。
是否有财产仍然存在 基本上是原始值,即 在这种情况下,选项2。
答案 0 :(得分:5)
正如我将以下内容放在一起的概念 - 可能有更好的方法来实现这一目标:
var vals = [];
document.getElementById("colors").onchange = function(){
vals.unshift(this.selectedIndex);
};
function getPrevious(){
alert(vals[1]); // you'll need more logic here
// this is purposefully simplistic
}
-
<select id="colors">
<option>Red</option>
<option>Green</option>
<option>Blue</option>
</select>
我试图将这一切都绑定到实际的下拉元素本身。老实说,这是我第一次在下拉列表中添加功能,所以我不能保证这不会产生后果:
var colors = document.getElementById("colors");
colors.vals = [];
colors.setPrevious = function() { this.vals.unshift(this.selectedIndex); }
colors.getPrevious = function() { return this.vals[1]; }
colors.onchange = function() { this.setPrevious(); this.getPrevious(); }
// set initial state
colors.setPrevious();
答案 1 :(得分:0)
不,你需要在js变量中坚持自己。
答案 2 :(得分:0)
正如dl所说,你可以使用简单的隐藏变量来保存值。我们可以在隐藏的变量中设置当前值。
<input type = "hidden" id = "previous" name = "previous"></input>
使用onfocus =“setPrevious(this.id)”设置当前值
function setPrevious(id) {
document.getElementById("previous").value = document.getElementById(id).selectedIndex ;
}
使用Onchange()检查确认按钮输出并设置“上一个”值
document.getElementById(id).selectedIndex = document.getElementById("previous").value;