下拉currentIndex onchange

时间:2009-12-31 01:36:24

标签: javascript html html-select

有一个包含5个选项的下拉列表。目前,选择了选项2.用户现在选择选项4. onchange事件被触发,该事件被一个JS函数捕获,该函数监听select上的onchange。

在JS函数中,我可以使用 selectedIndex 属性轻松检查用户选择的选项的索引。但是,我还想知道用户更改它的原始值是多少从。

  

是否有财产仍然存在   基本上是原始值,即   在这种情况下,选项2。

3 个答案:

答案 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)”设置当前值

JS

function setPrevious(id) {
	document.getElementById("previous").value = document.getElementById(id).selectedIndex ;
}

使用Onchange()检查确认按钮输出并设置“上一个”值

document.getElementById(id).selectedIndex = document.getElementById("previous").value;