Получить предыдущее и текущее выбранное значение раскрывающегося списка, используя выбранный в jquery

У меня есть выпадающий

 <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 ответа

Определить их отдельно

    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 для получения начального значения.

Учитывая вашу опечатку в объявлении выбора класса 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;
});
})();

Пожалуйста, убедитесь, что у вас есть 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/

Другие вопросы по тегам