使用jquery中选择的下拉列表获取上一个和当前选定的值

时间:2015-01-26 07:15:09

标签: javascript jquery onclick jquery-chosen

我有一个下拉

 <select name="manager" class="managerchosen-select-deselect" >
    <option value="" >Select  Manager</option>
    <option value="xyz"> XYZ </option>
    <option value="abc"> ABC</option>
    <option value="pqr"> PQR</option>
  </select>

我需要根据此下拉列表中的2个事件发出2个警报。首先是当我点击下拉列表时,必须在警报中显示前一个值,第二个是在下拉列表更改时,当前所选值将显示在警报中。

我尝试过以下jquery代码,但我只收到一个警告,即更改。点击时我没有收到警报。为什么呢?

    var lastvalue;
   $(".manager").bind("click", function(e){
     lastValue = $(this).val(); 
     alert(lastvalue);
     }).bind("change", function(e){ alert('value changed');
     changeConfirmation = confirm("Are You Sure?");
   if (changeConfirmation) {
      //proceed
   } else {
      $(this).val(lastValue);
   }
   });

3 个答案:

答案 0 :(得分:1)

单独定义

    var lastvalue;
   $(".manager").bind("click", function(e){
     lastValue = $(this).val(); 
     alert(lastvalue);
     });
   $(".manager").bind("change", function(e){ 
     alert('value changed');
     changeConfirmation = confirm("Are You Sure?");
     if (changeConfirmation) {
      //proceed
     } else {
      $(this).val(lastValue);
     }
   });

您可以使用defaultValue来检索初始值。

答案 1 :(得分:0)

在将选定的课程managerchosen-select-deselect声明为manager chosen-select-deselect时,考虑到您的拼写错误,您可能想尝试一下:

http://jsfiddle.net/wsejec8L/

(function () {
    var lastValue;    
 $(".manager").on('click', function () {
       lastValue = this.value;
 }).change(function() {
          alert('Previous value: ' + lastValue);
          alert('Current value: ' +this.value);
          lastValue = this.value;
});
})();

答案 2 :(得分:0)

请确保您的select元素上有manager课程。您可以使用focus事件而不是click,因为用户可以按Tab键到达下拉菜单,然后使用箭头键更改值,单击将无法在此用例中使用。

(function () {
    var lastValue;    
    $(".manager").on('focus', function () {
        lastValue = this.value;
    }).change(function() {
        alert('Previous value: ' + lastValue);
        alert('Current value: ' +this.value);
        lastValue = this.value;
    });
})();

更新小提琴(使用焦点): http://jsfiddle.net/wsejec8L/1/