在onchange之前获得选择的选项

时间:2016-01-20 17:26:12

标签: javascript jquery

我有一个像这样的选择标签

<select class="selecttag" onchange="onchangeEvent()">
<option value="1">value1</option>
<option value="2">value2</option>
<option value="3">value3</option>
<option value="4">value4</option>
</select>

如何在onchange事件之前获得选择选项?

4 个答案:

答案 0 :(得分:3)

您可以将值存储在focus事件的元素数据中。

e.g。类似的东西:

$('.selecttag').on('focus', function(){
   $(this).data("value", $(this).val());
})

然后在更改事件中,您将获得data("value")

e.g。

$('.selecttag').on('change', function(){
   var orig = $(this).data("value");
   var newVal = $(this).val();
   // Save the newer value 
   $(this).data("value", $(this).val());
   // Do something with both values!
});

说明:

  • 我上面仅使用jQuery事件处理程序,并建议您不要将inline事件处理程序与jQuery混合使用。这样可以避免将事件注册与事件处理程序分开,并启用jQuery提供的额外事件功能。
  • 使用jQuery处理程序也可以链接它们:

e.g。

$('.selecttag').on('focus', function(){
   $(this).data("value", $(this).val());
}).on('change', function(){
   var orig = $(this).data("value");
   var newVal = $(this).val();
   // Save the newer value 
   $(this).data("value", $(this).val());
   // Do something with both values!
});

第一次重点实际上是多余的,所以你可以这样做一次,如下:

$('.selecttag').one('focus', function(){
   $(this).data("value", $(this).val());
}).on('change', function(){
   var orig = $(this).data("value");
   var newVal = $(this).val();
   // Save the newer value 
   $(this).data("value", $(this).val());
   // Do something with both values!
});

答案 1 :(得分:0)

在var中设置先前的值,并在更改时更新它。您的onchange应该在JS中管理:

&#13;
&#13;
var prev = $("#select").val();
$("#select").on("change", onchangeEvent);

function onchangeEvent() {
  var curr = $("#select").val();
  console.log("Prev: " + prev, "Current: " + curr);
  prev = curr;
}
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<select id="select" class="selecttag">
  <option value="1">value1</option>
  <option value="2">value2</option>
  <option value="3">value3</option>
  <option value="4">value4</option>
</select>
&#13;
&#13;
&#13;

答案 2 :(得分:0)

在做这样的事情之前,我会抓住#selecttag的当前值:

$(document).ready(function(){
    var selected = $(".selecttag option:selected");
    // do whatever after this
});

答案 3 :(得分:-2)

您可以使用jQuery获取值。

$( "#selecttag" ).val();